Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
maven故障保护插件_Maven_Selenium_Maven Failsafe Plugin - Fatal编程技术网

maven故障保护插件

maven故障保护插件,maven,selenium,maven-failsafe-plugin,Maven,Selenium,Maven Failsafe Plugin,我尝试使用mvn故障保护插件仅运行selenium测试。我创建了一个单独的概要文件,只运行selenium测试,但mvn无法找到它们。我的项目结构看起来像 moduleA scr/main/... src/test/integration/java/... scr/test/unit/java/... moduleB scr/main/... src/test/integration/java/... scr/test/unit/java/... module

我尝试使用mvn故障保护插件仅运行selenium测试。我创建了一个单独的概要文件,只运行selenium测试,但mvn无法找到它们。我的项目结构看起来像

moduleA
  scr/main/...
  src/test/integration/java/...
  scr/test/unit/java/...    

moduleB
  scr/main/...
  src/test/integration/java/...
  scr/test/unit/java/...

moduleC (only for selenium tests)
  scr/main/java/com/selenium/A.java
  src/test/java/...
因为我在moduleA和B中为单元测试和集成测试创建了新的目录。我在pom.xml(listingB)中定义了以下内容,以便让Maven了解其他测试目录。到目前为止还不错,但当我在moduleC中添加selenium测试时,我只想运行selenium,而不是运行selenium测试。我创建了一个新的概要文件(listingA)来运行selenium测试。感谢您的帮助

列表a:


硒
org.apache.maven.plugins
maven故障保护插件
验证
集成测试
验证
**/selenium/*.java
org.apache.maven.plugins
maven surefire插件
真的
列表b:


org.codehaus.mojo
构建助手maven插件
1.7
添加测试源
生成测试源
添加测试源
${basedir}/src/test/unit/java
${basedir}/src/test/integration/java
${basedir}/src/test/common/java
添加测试资源
生成测试资源
添加测试资源
${basedir}/src/test/integration/resources
${basedir}/src/test/unit/resources
${basedir}/src/test/common/resources

我想到的第一件事是,为什么要使用不同的文件夹来分离单元测试和集成测试,因为在Maven中,单元测试和集成测试之间的分离是通过命名约定来完成的

单元测试必须命名为

**/Test*.java
**/*Test.java
**/*TestCase.java
集成测试必须命名为:

**/IT*.java
**/*IT.java
**/*ITCase.java
这意味着您可以将集成测试和单元测试放在同一个文件夹中,该文件夹是src/test/java,没有任何问题。集成测试的执行不受此影响

如果你愿意打电话

mvn clean package
将只运行单元测试。如果还需要运行集成测试,只需使用:

mvn verify
如果不想跳过单元测试,可以使用以下方法:

mvn-DskipTests=真验证

对于您创建的单独的selenium模块,最好的解决方案是使用适当的命名约定将集成测试放入通常的文件夹src/test/java

您可能会遇到的问题是,如果您的集成测试需要一些特殊的资源,您可能会将这些集成测试移动到单独的模块中,而只使用集成测试

  • 如果您的Selenium测试位于
    src/test/java
    文件夹中,请从列表中的
    maven故障保护插件的配置中删除
    参数

  • 将Selenium测试类命名为:

      **/IT*.java
      **/*IT.java
      **/*ITCase.java
    
    **/Test*.java
    **/*Test.java
    **/*TestCase.java
    
    (正如khmarbaise所建议的那样)

  • Failsafe使用Surefire运行集成测试,因此不要命名Selenium测试类,如:

      **/IT*.java
      **/*IT.java
      **/*ITCase.java
    
    **/Test*.java
    **/*Test.java
    **/*TestCase.java
    
    因为这将使它们按照您的计划在测试fase中运行,而不是在集成测试fase中运行


  • 我有一个与您类似的配置,它可以正常工作。

    请告诉我们您为尝试运行Selenium测试而执行的Maven命令好吗?我已将Selenium测试放在单独模块中的常用文件夹src/test/java中,但问题是,当我使用新配置文件运行时,Maven没有识别此文件夹。它不会在这个新模块中运行任何测试。您不应该使用概要文件来完成这些事情,因为maven有一个集成测试的生命周期阶段。