1

如果我按如下方式设置我的<reporting>部分pom,我只会得到肯定的报告,而最糟糕的报告会失败,因为它找不到任何输入。

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <version>2.9</version>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-report-plugin</artifactId>
        <version>2.19.1</version>
      </plugin>
      <plugin>
        <groupId>org.pitest</groupId>
        <artifactId>pitest-maven</artifactId>
        <version>1.1.10</version>
        <configuration>
          <targetClasses>
            <param>pricingengine.*</param>
          </targetClasses>
          <targetTests>
            <param>pricingengine.*</param>
          </targetTests>
        </configuration>
        <reportSets>
          <reportSet>
            <reports>
              <report>report</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
    </plugins>
  </reporting>

要获取pitest报告的输入以便输出到站点报告,我需要先执行以下操作:

mvn compile test-compile org.pitest:pitest-maven:mutationCoverage

我是否必须在本节中将这些中的每一个设置为绑定到阶段<build>的插件才能实现这一点?或者有没有我不知道的另一个插件的更简单的解决方案?executionspre-site

4

1 回答 1

1

然而,maven-surefire-report-plugin 明确指出,它调用test了默认生命周期的目标。最糟糕的插件没有。所以是的,您必须将 Pitest-maven 插件添加到构建部分并将其绑定到生命周期阶段,即pre-site. 我不建议为此目的使用站点生命周期,因为它不适用于长期运行的分析任务,但这取决于您。

所以构建顺序是:

  • 构建生命周期
    • 构建模块(编译阶段)
    • 运行测试(测试阶段)
    • 运行变异覆盖(即在验证阶段)
  • 站点生命周期
    • 预站点(mutationCoverage);
    • 生成报告
    • 发布报告
    • ...

我建议使用配置文件,因此突变测试不会在每个构建上运行,您可以在需要时激活它(即mvn site-P pit

<profile>
  <id>pit</id>
  <build>
    <plugins>
        <plugin>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-maven</artifactId>
            <configuration>
                <targetClasses>
                    <param>pricingengine.*</param>
                </targetClasses>
                <targetTests>
                    <param>pricingengine.*</param>
                </targetTests>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>mutationCoverage</goal>
                    </goals>
                    <phase>pre-site</phase>
                </execution>
            </executions>
        </plugin>
    </plugins>
  </build>
</profile>
于 2016-06-15T09:25:58.683 回答