我们目前正在将并行构建引入我们的 Maven 项目以减少构建时间。我们的 Maven 项目中有 4 个模块。
- 主应用
- 主应用变异测试
- 主应用程序集成测试
- 主应用验收测试
作为并行构建的一部分,我们正在并行构建模块 2,3 和 4(在模块 1 - 'main-app' 之后)。我们需要首先构建“主应用程序”,因为其他 3 个模块依赖于它。突变测试需要一段时间,所以我们不想在“主应用程序”中进行。
我们在“main-app-mutation-test”中使用 ptest 进行突变测试。此模块包含的唯一实际 java 文件是测试代码(在标准 maven 目录结构中)。我们希望突变测试的代码存在于“主应用程序”中,并通过标准的 Maven 依赖项继承。这是我们最糟糕的插件配置(精简):
<plugin>
<groupId>org.pitest</groupId>
<artifactId>pitest-maven</artifactId>
<version>1.4.10-DUMMY-SNAPSHOT</version>
<executions>
<execution>
<id>default-cli</id>
<goals>
<goal>mutationCoverage</goal>
</goals>
<configuration>
<targetClasses>
<targetClass>com.dummy.*</targetClass>
</targetClasses>
<outputFormats>
<outputFormat>HTML</outputFormat>
</outputFormats>
<mutationThreshold>99</mutationThreshold>
<coverageThreshold>99</coverageThreshold>
<detectInlinedCode>true</detectInlinedCode>
<threads>4</threads>
<timestampedReports>false</timestampedReports>
<skip>false</skip>
<skipTests>false</skipTests>
</configuration>
</execution>
</executions>
</plugin>
但是当我们运行最糟糕的插件时,我们会得到以下日志,并且不会运行突变测试。
[INFO] 跳过项目,因为:
[INFO] - 项目没有测试,它是空的。
我曾希望 'targetClasses' 值能告诉 Pitest 哪些 Java 类要进行变异测试。该项目还通过“maven-surefire-plugin”运行单元测试,它发现要测试的测试类和目标类都没有问题。
所以我的问题是,我们能否指定要进行突变测试的类,即使它们在继承的 jar 文件中并且不存在于模块本身中?