本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看<活动链接>
**提问:即使某些测试失败,使Maven依旧运行所有测试 **
我有一个包含多个模块的项目。 当所有测试通过时,Maven测试将全部运行。
当第一个模块中的测试失败时,maven将不会继续进行下一个项目。 我在Surefire设置中将testFailureIgnore设置为true,但这无济于事。
我如何使maven运行所有测试,而不管先前的失败是什么,先前是否失败?
回答1:
尝试在根项目的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>
回答2:
-fae,-fail-at-end 允许所有未受影响的构建继续,仅仅在已经失败后使用,比如ABCD,D依赖于C,由于C失败,此时运行该命令,程序会构建AB
-fn,-fail-never永远不会使构建失败,无论项目结果如何
综上所述,如果您要测试一个模块,那么使用-fae是安全的。
否则,如果您有多个模块,并且要对所有模块进行测试(甚至依赖于失败的测试模块的模块),则应运行mvn clean install -fn。 -fae将继续进行测试失败的模块(将运行所有其他测试),但是将忽略所有依赖于该模块的模块。