Java Maven站点报告surefire测试很好,需要额外配置以实现最简单的变异覆盖率

Java Maven站点报告surefire测试很好,需要额外配置以实现最简单的变异覆盖率,java,maven,pitest,Java,Maven,Pitest,如果我在我的pom中设置部分如下,我只会得到surefire报告,而最简单的报告会失败,因为它找不到任何输入 <reporting> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-project-info-reports-plugin</artifa

如果我在我的
pom
中设置
部分如下,我只会得到surefire报告,而最简单的报告会失败,因为它找不到任何输入

  <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>

org.apache.maven.plugins
maven项目信息报告插件
2.9
org.apache.maven.plugins
maven surefire报告插件
2.19.1
org.pitest
可怜的马文
1.1.10
普里辛根尼*
普里辛根尼*
报告
要获取对
pitest
报告的输入,以便将其输出到站点报告,我需要首先执行以下操作:

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


我是否必须将
部分中的每一个都设置为
执行绑定到
预站点
阶段的插件才能实现这一点?还是有一个更简单的解决方案与另一个我不知道的插件?

maven surefire report插件然而明确地说,它调用默认生命周期的
测试目标。最可怜的插件没有。因此,是的,您必须将最简单的maven插件添加到构建部分,并将其绑定到生命周期阶段,即
站点前期
。我不建议为此目的使用站点生命周期,因为它不适用于长时间运行的分析任务,但这取决于您

因此,构建顺序是:

  • 构建生命周期
    • 构建模块(编译阶段)
    • 运行测试(测试阶段)
    • 运行变异覆盖率(即在验证阶段)
  • 站点生命周期
    • 现场前(变更覆盖率)
    • 生成报告
    • 发布报告
我建议使用一个配置文件,这样突变测试就不会在每个构建上运行,您可以在需要时激活它(即
mvn site-p pit


矿井
org.pitest
可怜的马文
普里辛根尼*
普里辛根尼*
突变覆盖率
现场前

我实际上已经将其绑定到了站点前期阶段,因为站点生命周期是我真正需要它的。理想情况下,我希望将站点生命周期与部署/发布生命周期联系起来,但这是另一回事。但这没有意义,“站点生命周期处理项目站点文档的创建”,而不是实际执行分析任务。你当然可以这样做,但你不应该这样做。突变测试不是生成报告,而是查找测试套件中的漏洞。事实上,最简单的maven reporting插件需要该测试输出,因为它本身并不生成该测试输出。但是,surefire报告插件会调用编译、测试编译和surefire测试。我需要模仿最简单的插件。在这种情况下,只需将执行绑定到
pre-site
(我相应地更新了响应)surefire报告插件定义了它自己的生命周期,该生命周期定义了测试阶段。自定义maven插件通常不定义自定义生命周期。因此,如果您希望类似于构建生命周期,您必须在pom中定义所有必要的目标,这可能是一项乏味的任务。也许可以在mutationCoverage之前运行报告插件。不过,我也不会那样做。在生成报告之前运行构建生命周期可能更容易,比如
mvn安装站点
。如果代码已经编译好,就不会花那么长时间(特别是与mutationCoverage相比)。如何调用站点生成?只是
mvn站点
?@GeraldMücke是的,没错。它可能运行在一个CI服务器从属服务器上,在这个从属服务器上没有其他东西,一个完全空白的环境。
<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>