【发布时间】:2020-07-21 14:07:08
【问题描述】:
我在Integration.java 下进行了一些单元测试。我希望 Maven 忽略此类的测试结果,因为它们很少失败(由于外部服务器维护)。但我不想忽略它们运行,因为我需要它们来进行代码覆盖。
我试过这个配置
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<includes>
<include>IntegrationTest.java</include>
</includes>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>
这似乎通过忽略失败的测试来工作。但是上述配置的问题是,它也忽略了其他类的失败测试。
我希望Integration.java 下的所有测试都需要执行,但它不应该对确定成功/失败的构建产生任何影响。
但是,如果任何测试用例在 Integration.java 以外的任何其他测试类下失败,则构建应该会失败
【问题讨论】:
-
使用 JUnit,您可以使用
@BeforeAll方法中的假设来验证服务器连接并有条件地执行测试。如果服务器不可用,则不会执行测试。 -
第一件事是集成测试应该由 maven failsafe 插件而不是 maven surefire 插件处理...另一方面,maven failsafe 插件有一个目标
verify如果测试失败修复测试直到工作,否则它们是无用的。 -
@khmarbaise 我不知道 maven-failsafe-plugin,这可能会有所帮助。谢谢
标签: java maven testng maven-surefire-plugin