让Maven运行所有测试,即使有些失败

rip*_*234 234 java maven-2 surefire

我有一个包含几个模块的项目.当所有测试通过后,Maven测试将全部运行.

当第一个模块中的测试失败时,maven将不会继续下一个项目.我在Surefire设置中将testFailureIgnore设置为true,但它没有帮助.

如何让maven运行所有测试?

des*_*pot 334

从文档:

-fae,之后--fail-at-end 才失败; 允许所有未受影响的构建继续

-fn,无论项目结果如何,都--fail-never 不会失败

因此,如果您正在测试一个模块而不是您正在使用的模块-fae.

否则,如果您有多个模块,并且您希望所有mvn clean install -fn模块都经过测试(即使是依赖于失败的测试模块的模块),您也应该运行.
-fae将继续使用具有失败测试的模块(将运行所有其他测试),但将跳过依赖于它的所有模块.

  • 我刚刚测试了选项`--fail-never`.即使存在编译错误,Maven也不会使构建失败.如果我在Jenkins上使用这个选项,即使它有很多编译错误,构建看起来也很成功.在这种情况下,我更喜欢`-Dmaven.test.failure.ignore = true`,让詹金斯分析一下万无一失的报道. (7认同)
  • 可以在pom文件中配置吗? (2认同)

rip*_*234 92

我刚刚找到了"-fae"参数,它导致Maven运行所有测试而不是在失败时停止.

  • 在多模块项目中,依赖于未通过测试的模块的模块将被跳过。使用-fn代替。 (4认同)
  • 遗憾的是,当我将它传递给TeamCity时,此参数不起作用. (3认同)
  • @ ripper234你有没有办法让它在TeamCity上运行? (2认同)

Pas*_*ent 78

你可以用surefire 2.6进行测试,并配置surefire testFailureIgnore=true.或者在命令行上:

mvn install -Dmaven.test.failure.ignore=true
Run Code Online (Sandbox Code Playgroud)

  • IIRC这对整个构建没有失败的影响,而不是最终运行所有测试和失败. (15认同)
  • 这是唯一对我有用的选项......“-fae”选项对测试失败没有任何作用 (2认同)

nyb*_*bon 32

尝试在root项目的pom.xml中为surefire插件添加以下配置:

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <testFailureIgnore>true</testFailureIgnore>
        </configuration>
      </plugin>
    </plugins>
  </build>
  [...]
</project>
Run Code Online (Sandbox Code Playgroud)


rus*_*tyx 14

快速回答:

mvn -fn test
Run Code Online (Sandbox Code Playgroud)

适用于嵌套项目构建.