使用JaCoCo进行代码覆盖率分析
一、背景说明
1、下载jacoco
https://www.jacoco.org/jacoco/
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.流程说明
- 启动监控:应用运行时,JaCoCo 通过 TCP 服务器实时收集覆盖率数据
- 执行测试:运行你的测试用例(单元测试、集成测试等)
- 导出数据:从 TCP 服务器导出覆盖率数据到 .exec 文件
- 生成报告:基于源代码和编译文件生成可视化报告
三、执行结果
1.启动应用
2.执行测试
3.导出数据
4.生成报告