3

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

  1. 主应用
  2. 主应用变异测试
  3. 主应用程序集成测试
  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 文件中并且不存在于模块本身中?

4

1 回答 1

1

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

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

于 2019-12-19T10:26:17.923 回答