可以将 pitest 配置为存在依赖于 maven 的 jar 文件而不是 maven 模块本身的变异测试代码吗?

Can pitest be configured to mutation test code that exists a maven dependent jar file and not the maven module itself?

我们目前正在将并行构建引入我们的 Maven 项目以减少构建时间。我们的 maven 项目中有 4 个模块。

  1. 主应用程序
  2. main-app-mutation-test
  3. 主应用集成测试
  4. 主应用验收测试

作为并行构建的一部分,我们正在并行构建模块 2、3 和 4(在模块 1 之后 - 'main-app')。我们需要先构建 'main-app',因为其他 3 个模块依赖于它。突变测试需要一段时间,所以我们不想在 'main-app'.

中进行

我们在'main-app-mutation-test'中使用pitest进行突变测试。该模块包含的唯一实际 java 文件是测试代码(在标准 maven 目录结构中)。我们希望突变测试的代码存在于 'main-app' 中,并通过标准的 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>

但是当我们 运行 pitest 插件时,我们得到以下日志记录并且变异测试不是 运行。

[INFO] Skipping project because:
[INFO] - Project has no tests, it is empty.

我曾希望 'targetClasses' 值可以告诉 pitest 什么 java 类 可以进行突变测试。该项目还通过 'maven-surefire-plugin' 运行 进行了单元测试,它发现要测试的测试和目标 类 都没有问题。

所以我的问题是,我们可以指定 类 进行变异测试,即使它们在继承的 jar 文件中并且不存在于模块本身中吗?

这不能通过 maven 插件完成,它要求单元测试与它们测试的代码位于同一模块中。

通常的方法是 运行 突变测试作为配置文件的一部分。