我有一个项目与几个模块。当所有测试都通过时,Maven测试将运行它们。
当第一个模块中的测试失败时,maven将不会继续到下一个项目。我有testFailureIgnore设置为true在Surefire设置,但它没有帮助。
如何使maven运行所有测试而不考虑以前的失败?
我有一个项目与几个模块。当所有测试都通过时,Maven测试将运行它们。
当第一个模块中的测试失败时,maven将不会继续到下一个项目。我有testFailureIgnore设置为true在Surefire设置,但它没有帮助。
如何使maven运行所有测试而不考虑以前的失败?
当前回答
来自Maven Embedder文档:
-fae,——fail-at-end允许所有不受影响的构建继续 -fn,——fail- NEVER无论项目结果如何,绝不让构建失败
因此,如果您正在测试一个模块,那么使用-fae是安全的。
否则,如果您有多个模块,并且希望对所有模块进行测试(甚至是那些依赖于失败的测试模块的模块),则应该运行mvn clean install -fn。 -fae将继续处理测试失败的模块(将运行所有其他测试),但将跳过依赖它的所有模块。
其他回答
我刚刚找到了-fae参数,它导致Maven运行所有测试,而不是在失败时停止。
尝试在根项目的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>
一个简单的回答:
mvn -fn test
使用嵌套项目构建。
使用<testFailureIgnore>true</testFailureIgnore>配置Surefire。
或者在命令行中:
mvn install -Dmaven.test.failure.ignore=true
来自Maven Embedder文档:
-fae,——fail-at-end允许所有不受影响的构建继续 -fn,——fail- NEVER无论项目结果如何,绝不让构建失败
因此,如果您正在测试一个模块,那么使用-fae是安全的。
否则,如果您有多个模块,并且希望对所有模块进行测试(甚至是那些依赖于失败的测试模块的模块),则应该运行mvn clean install -fn。 -fae将继续处理测试失败的模块(将运行所有其他测试),但将跳过依赖它的所有模块。