当前位置: 首页 > news >正文

使用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
企业微信截图_17600940941533

http://www.hskmm.com/?act=detail&tid=28207

相关文章:

  • 计算机视觉专家入选德国国家科学院
  • 2025 年工程管理软件/软件系统/软件App/软件平台/工程管理软件和验房系统公司/企业推荐榜:数字化转型下的实用选型指南
  • 【Java学习】【Java基础】--第1篇:入门Java和对面向对象的理解
  • solutions
  • 技术面:Spring (事务传播机制、事务失效的原因、BeanFactory和FactoryBean的关系)
  • 安装与配置MySQL 8 on Ubuntu,包括权限授予、数据库备份及远程连接
  • 04-最简单的字符设备驱动
  • 完整教程:手机可视化方案(针对浓度识别)
  • AI元人文系列文章:决策范式与无为而治
  • SAP导入证书
  • Kubernetes存储卷:保障有状态应用的数据持久化
  • MySQL的查询操作语法要点
  • 华为链路聚合配置
  • 手机adb 调试自己
  • 离线安装 mysql
  • what is a good parent
  • 2025 年公共/商场/学校/地铁/电影院/会所/机场/卫生间隔断厂家选购指南:优质厂商推荐与实用选择策略
  • 为什么不该用 Double 表示金额及解决方案
  • Windows开发环境安装备忘录
  • Vue.use(Vuex)
  • [Gym-100343E]Convex Permutominoes 题解
  • MyBatis 中的动态 SQL 的相关使用方法(Javaee/MyBatis) - 教程
  • 网络优化问题
  • Java环境安装备忘录
  • 深入解析:【Spring MVC终极指南】一文掌握请求处理与响应!从Servlet原生方式到SpringMVC高效优雅写法
  • foobar2000 v2.25.2 汉化版
  • 比特币地址投毒攻击深度剖析
  • 为什么大家都爱用微擎?这几点真的太香了
  • 【JS逆向百例】某坤行 1101,雪球 1038,新 acw_sc__v2 逆向分析
  • JAVA 的模板方法模式解析