使用JaCoCo进行代码覆盖率分析

使用JaCoCo进行代码覆盖率分析

一、背景说明

1、下载jacoco

https://www.jacoco.org/jacoco/
image

2、解压缩后的两个关键文件

  • jacocoagent.jar - 用于运行时收集覆盖率数据

  • jacococli.jar - 用于操作覆盖率数据

二、流程命令及说明

1.启动一个Java应用程序并开启覆盖率监控

java -javaagent:jacocoagent.jar=includes=*,output=tcpserver,port=6300,address=localhost,append=true -jar boot-0.0.1-SNAPSHOT.jar

这条命令启动一个Java应用程序,并附加JaCoCo的Java代理(jacocoagent.jar)。这个代理会在应用程序运行时收集覆盖率数据

参数说明:

  • -javaagent:jacocoagent.jar:使用 JaCoCo 的 Java 代理

  • includes=*:监控所有类(可以使用包名限制,如 com.example.*)

  • output=tcpserver:通过 TCP 服务器输出覆盖率数据

  • port=6300:TCP 服务器端口

  • address=localhost:只允许本地连接

  • append=true:如果文件已存在则追加数据

  • -jar boot-0.0.1-SNAPSHOT.jar:要监控的应用程序

2.导出覆盖率数据

java -jar jacococli.jar dump --address localhost --port 6300 --destfile jacoco-demo.exec

参数说明:

  • dump:从运行中的应用导出覆盖率数据

  • --address localhost:连接地址

  • --port 6300:连接端口

  • --destfile jacoco-demo.exec:导出到的数据文件

3.生成覆盖率报告

java -jar jacococli.jar report jacoco-demo.exec --classfiles D:/CodesOfStudy/jacocoTest/boot/target/classes --sourcefiles D:/CodesOfStudy/jacocoTest/boot/src/main/java --html html-report --xml report.xml --encoding=utf-8

参数说明:

  • report:生成报告命令

  • jacoco-demo.exec:覆盖率数据文件

  • --classfiles:编译后的 class 文件目录

  • --sourcefiles:源代码目录

  • --html html-report:生成 HTML 格式报告到 html-report 目录

  • --xml report.xml:生成 XML 格式报告

  • --encoding=utf-8:指定编码格式

4.流程说明

  1. 启动监控:应用运行时,JaCoCo 通过 TCP 服务器实时收集覆盖率数据
  2. 执行测试:运行你的测试用例(单元测试、集成测试等)
  3. 导出数据:从 TCP 服务器导出覆盖率数据到 .exec 文件
  4. 生成报告:基于源代码和编译文件生成可视化报告

三、执行结果

1.启动应用

image

2.执行测试

image

3.导出数据

企业微信截图_17600938714437
企业微信截图_17600938539918

4.生成报告

企业微信截图_17600940455559
企业微信截图_17600940603805
image

posted @ 2025-10-10 19:15  hqq的进阶日记  阅读(13)  评论(0)    收藏  举报