说在前面的话

加载jacocoagent,开始采集覆盖率数据。

java -javaagent:doc/jacocoagent.jar=includes=com.jacoco.*,output=tcpserver,port=7195,address=172.27.3.242,classdumpdir=classdumpdir/classes/ \
-jar target/jacoco-test-sample.jar


  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.2.4.RELEASE)

2024-10-23 10:06:59.755  INFO 62363 --- [           main] com.jacoco.JacocoTestApplication         : Starting JacocoTestApplication v1.0.0 on xxxdeMacBook-Air.local with PID 62363 (/Users/xxx/Documents/code/jacoco-test-sample/target/jacoco-test-sample.jar started by zhuwenping in /Users/xxx/Documents/code/jacoco-test-sample)
2024-10-23 10:06:59.785  INFO 62363 --- [           main] com.jacoco.JacocoTestApplication         : No active profile set, falling back to default profiles: default
2024-10-23 10:07:04.255  INFO 62363 --- [           main] com.jacoco.JacocoTestApplication         : Started JacocoTestApplication in 5.64 seconds (JVM running for 7.01)

在这里插入图片描述

一、什么是jacoco-maven-plugin

除了使用jacoco.cli.jar导出并生成覆盖率报告外,还可以使用jacoco-maven-plugin,它是maven集成了jacoco的一款插件。

在工程pom.xml里配置插件jacoco-maven-plugin。

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.8.3</version>
    <configuration>
        <!--javaagent所在机器地址-->
        <address>172.27.3.242</address>
        <!--javaagent所在机器,tcpserver的端口号-->
        <port>7195</port>
        <destFile>${project.build.directory}/jacoco.exec</destFile>
        <reset>false</reset>
        <append>true</append>
        <sourceEncoding>utf-8</sourceEncoding>
        <excludes>
            <exclude>com/jacoco/JacocoTestApplication.class</exclude>
        </excludes>
    </configuration>
    <executions>
        <execution>
            <id>dump</id>
            <goals>
                <goal>dump</goal>
            </goals>
        </execution>
        <execution>
            <id>report</id>
            <phase>test</phase>
            <goals>
                <goal>report</goal>
            </goals>
            <configuration>
                <dataFile>${project.build.directory}/jacoco.exec</dataFile>
                <outputDirectory>${project.reporting.outputDirectory}/jacoco</outputDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>

二、mvn jacoco:dump

等价于 java -jar doc/jacococli.jar dump --address 172.27.3.242 --port 7195 --destfile target/jacoco.exec

在这里插入图片描述

在工程target目录下将生成一个.exec文件。

在这里插入图片描述

三、mvn jacoco:report

等价于 java -jar doc/jacococli.jar report jacoco.exec --classfiles target/classes --sourcefiles src/main/java --html target

不出意外,将在target目录下生成测试覆盖率的html报告。

可当执行命令mvn jacoco:report的时候,意外还是发生了。

在这里插入图片描述

1、需要提前编译好工程

mvn package -DskipTests

会一并把测试覆盖率的报告生成,这里把它手动删除,只为验证后面的命令。

在这里插入图片描述

2、再次生成报告

mvn jacoco:report, target目录下生成一个site目录

在这里插入图片描述

在这里插入图片描述

四、总结

三步走,即可得到测试覆盖率报告。

  • mvn package
  • mvn jacoco:dump
  • mvn jacoco:report

浏览器输入网址: http://localhost:63342/jacoco-test-sample/target/site/jacoco/index.html

在这里插入图片描述

附录

Java应用程序的测试覆盖率之设计与实现(一)-- 总体设计
Java应用程序的测试覆盖率之设计与实现(二)-- jacoco agent
Java应用程序的测试覆盖率之设计与实现(三)-- jacoco cli 客户端
Java应用程序的测试覆盖率之设计与实现(四)-- jacoco-maven-plugin
Java应用程序的测试覆盖率之设计与实现(五)-- jacoco ant task
Java应用程序的测试覆盖率之设计与实现(六)-- 单元测试覆盖率
Java应用程序的测试覆盖率之设计与实现(七)-- 增量代码的测试覆盖率
Java应用程序的测试覆盖率之设计与实现(八)-- jenkins集成

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐