提问人:RagaSGNur 提问时间:2/4/2023 更新时间:2/8/2023 访问量:1623
Java 8 到 Java 17 的迁移 + pitest 失败 - 突变测试需要绿色套件
Java 8 to Java 17 migration + pitest failing - Mutation testing requires a green suite
问:
最近,该项目已从 Java8 迁移到 Java17。还检查了项目的突变测试覆盖率,在迁移之前,在 mvn clean install org.pitest:pitest-maven:mutationCoverage 的命令运行期间没有已知问题
迁移后,问题报告为目标 org.pitest:pitest-maven:1.7.6:mutationCoverage 失败:6 个测试没有 t 在计算线路覆盖率时无突变。突变测试需要一个绿色套件。
pom.xml 文件具有
<plugin>
<groupId>org.pitest</groupId>
<artifactId>pitest-maven</artifactId>
<version>1.6.2</version>
<dependencies>
<dependency>
<groupId>org.pitest</groupId>
<artifactId>pitest-junit5-plugin</artifactId>
<version>0.12</version>
</dependency>
</dependencies>
</plugin>
注意:很少有测试用例包含 Whitebox.invokeMethod 来调用私有方法。在测试用例的运行过程中没有问题 - mvn 全新安装。 实际问题发生在使用命令运行 mutation test coverage 期间 - mvn clean install org.pitest:pitest-maven:mutationCoverage
我试图在pom.xml文件中包含选项--add-opens java.base/jdk.internal.misc=ALL-UNNAMED,但没有用。
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>
--add-opens java.base/jdk.internal.misc=ALL-UNNAMED
</argLine>
</configuration>
</plugin>
我试图将 pitest-maven 的版本从 1.6.2 更改为 1.7.3,将 pitest-junit5-plugin 的版本从 0.12 更改为 0.15。这也没有用。
在测试用例中使用 WhiteBox.invokeMethod 克服 Java17 中的 pitest-maven 的任何想法或建议。
答:
pitest-junit5-plugin 的正确版本有助于消除错误。
<groupId>org.pitest</groupId>
<artifactId>pitest-maven</artifactId>
<version>1.11.0</version>
<groupId>org.pitest</groupId>
<artifactId>pitest-junit5-plugin</artifactId>
<version>1.1.2</version>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.8.2</version>
除了 junit pitest-junit5-plugin 添加之外,还需要添加 --add-opens ,
<plugin>
<groupId>org.pitest</groupId>
<artifactId>pitest-maven</artifactId>
<version>1.11.0</version>
<dependencies>
<dependency>
<groupId>org.pitest</groupId>
<artifactId>pitest-junit5-plugin</artifactId>
<version>1.1.2</version>
</dependency>
</dependencies>
<configuration>
<argLine>
--add-opens java.base/java.lang=ALL-UNNAMED
</argLine>
</configuration>
</plugin>
评论
mvn clean verify
mvn clean install