使用Maven生成JaCoCo代码覆盖率报告

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Maven生成JaCoCo代码覆盖率报告相关的知识,希望对你有一定的参考价值。

我不明白,我尝试使用最简单的JaCoCo和Maven生成代码覆盖率报告。

我的pom.xml中有以下插件:

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>${jacoco.version}</version>
    <executions>
      <execution>
        <id>prepare-agent</id>
        <goals>
          <goal>prepare-agent</goal>
        </goals>
      </execution>
      <execution>
        <id>report</id>
        <phase>prepare-package</phase>
        <goals>
          <goal>report</goal>
        </goals>
      </execution>
      <execution>
        <id>post-unit-test</id>
        <phase>test</phase>
        <goals>
          <goal>report</goal>
        </goals>
        <configuration>
          <!-- Sets the path to the file which contains the execution data. -->

          <dataFile>target/jacoco.exec</dataFile>
          <!-- Sets the output directory for the code coverage report. -->
          <outputDirectory>target/my-reports</outputDirectory>
        </configuration>
      </execution>
    </executions>
    <configuration>
      <systemPropertyVariables>
        <jacoco-agent.destfile>target/jacoco.exec</jacoco-agent.destfile>
      </systemPropertyVariables>
  </configuration>
</plugin>

当我尝试进行mvn测试时,它只是没有做任何事情。甚至不是错误或其他什么。对于我的测试,它说BUILD SUCESS,但Maven似乎没有看到JaCoCo。如果我尝试执行mvn jacoco:报告,我还有一条消息:Skipping JaCoCo execution due to missing execution data file.

答案

以下配置应该足够了:

<build>
  <plugins>
    <plugin>
      <groupId>org.jacoco</groupId>
      <artifactId>jacoco-maven-plugin</artifactId>
      <version>${jacoco.version}</version>
      <executions>
        <execution>
          <id>prepare-agent</id>
          <goals>
            <goal>prepare-agent</goal>
          </goals>
        </execution>
        <execution>
          <id>report</id>
          <phase>test</phase>
          <goals>
            <goal>report</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

然后可以在target/site/jacoco/找到这些报告

在您的情况下它不起作用的原因:

  • 插件配置在pluginManagement
  • 插件位于profile

当你为mvn test执行jacoco-maven-plugin时,还要检查maven日志。有关更多信息,请运行mvn -X test

另一答案

这应该工作。只需从命令“mvn clean test”运行

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.8.2</version>
    <executions>
        <execution>
            <goals>
                <goal>prepare-agent</goal>
            </goals>
        </execution>
        <!-- attached to Maven test phase -->
        <execution>
            <id>report</id>
            <phase>test</phase>
            <goals>
                <goal>report</goal>
            </goals>
        </execution>
    </executions>
</plugin>

https://www.mkyong.com/maven/maven-jacoco-code-coverage-example/

以上是关于使用Maven生成JaCoCo代码覆盖率报告的主要内容,如果未能解决你的问题,请参考以下文章

在没有 Maven 或 Gradle 的情况下运行 jacoco 报告

Maven工程配置代码覆盖工具Jacoco

Maven工程配置代码覆盖工具Jacoco

如何在 Java 应用程序中使用 JaCoCo 生成代码覆盖率报告?

Maven Jacoco 配置 - 从报告中排除类/包不起作用

ANT 任务:使用 JaCoCo 的 SonarQube 扫描仪代码覆盖率报告