我是surefire插件的新手,正在尝试重新运行flaky测试。
我的配置如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M2</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>${suiteXmlFile}</suiteXmlFile>
</suiteXmlFiles>
<rerunFailingTestsCount>1</rerunFailingTestsCount>
</configuration>
</plugin>
我使用的命令是:
mvn clean test -DsuiteXmlFile=testNG.xml -Dsurefire.rerunFailingTestsCount=2
我得到了:
[ERROR] Tests run: 2, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 11.12 s <<< FAILURE! - in TestSuite
[ERROR] ieTest1(com.mycompany.testcases.Sample.independentTest) Time elapsed: 3.839 s <<< FAILURE!
java.lang.AssertionError: expected [true] but found [false]
但是,我可以看到/target/surefire报告已生成,但没有重新运行。有人能帮我弄清楚为什么重播没有开播吗?
根据http://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html#rerunFailingTestsCount,自3.0.0-M4以来,rerunFailingTestsCount仅适用于JUnit 4+提供程序和JUnit 5+提供程序,而不适用于TestNG。
我也在调查这个问题,到目前为止最完整的解释似乎是:https://www.toolsqa.com/selenium-webdriver/retry-failed-tests-testng/
自3.0.0-M4起支持"重新运行"功能,请参阅功能矩阵。
有关更多详细信息,请参阅这些Jiras:
支持JUnit 5测试重新运行的参数化测试
使用JUnit 5 重新运行失败测试
如果使用@DisplayName ,Surefire/Failsafe重新运行失败的测试功能在JUnit 5中失败
不要使用forkCount=0。它在非琐碎的项目中大多是无用的。
干杯Tibor17