在运行pit和jacoco时,所有的测试用例都通过了,并且测试覆盖范围很好,但是坑突变测试失败了,误差在以下。
Build Failure
All tests did not pass without mutation when calculating line coverage. Mutation testing requires a green suite.
因为我所有的测试用例都通过了,所以我无法弄清楚为什么坑测试失败了。在运行PIT测试时,我没有在控制台中看到任何测试失败。
如果是这样的话,请建议如何找出哪一个测试用例失败了,如果不是,请让我知道什么是坑测试失败的原因。
当我将错误注入测试套件并运行Pitest时,它将清楚地显示哪些测试失败。即使没有启用“冗长”的日志记录。
我已经在我的
pom.xml
中配置了Pitest,以便为我的测试添加一些配置以使其正常运行。以下块可能位于
<pluginManagement>
部分或
<profile>
中
<plugin>
<groupId>org.pitest</groupId>
<artifactId>pitest-maven</artifactId>
<version>1.8.0</version>
<dependencies>
<dependency>
<groupId>org.pitest</groupId>
<artifactId>pitest-junit5-plugin</artifactId>
<version>0.16</version>
</dependency>
</dependencies>
</plugin>
现在,我可以在命令行上运行
mvn test-compile pitest:mutationCoverage
来运行我的(错误的)测试套件,而无需进行常规的单元测试。
在Pitest的控制台输出中,我可以看到哪些测试方法失败了:
22:54:05 PIT >> INFO : Verbose logging is disabled. If you encounter a problem,
please enable it before reporting an issue.
22:54:06 PIT >> INFO : Incremental analysis reduced number of mutations by 0
22:54:06 PIT >> INFO : Created 69 mutation test units in pre scan
22:54:07 PIT >> INFO : Sending 85 test classes to minion
22:54:07 PIT >> INFO : Sent tests to minion
|22:54:17 PIT >> SEVERE : Description [testClass=com.myproject.core.MyTestClass,
name=[engine:junit-jupiter]/[class:com.myproject.core.MyTestClass]/[method:testBrokenOne()]]
did not pass without mutation.
/22:54:17 PIT >> SEVERE : Description [testClass=com.myproject.core.MyTestClass,
name=[engine:junit-jupiter]/[class:com.myproject.core.MyTestClass]/[method:testMethodTwo()]]
did not pass without mutation.