当前位置: 首页 > 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.zskr.cn/news/18357.html

相关文章:

  • 【Java学习】【Java基础】--第1篇:入门Java和对面向对象的理解
  • 技术面:Spring (事务传播机制、事务失效的原因、BeanFactory和FactoryBean的关系)
  • AI元人文系列文章:决策范式与无为而治
  • Android Activity 生命周期深度解析:从原理到实战,面试考点全覆盖 - 指南
  • SAP导入证书
  • 洛谷《深入浅出程序设计竞赛(基础篇)》题解
  • Windows开发环境安装备忘录
  • [Gym-100343E]Convex Permutominoes 题解
  • 不只是配送:同城配送系统如何成为新零售时代的核心基础设施 - 指南
  • 深入解析:【Spring MVC终极指南】一文掌握请求处理与响应!从Servlet原生方式到SpringMVC高效优雅写法
  • 比特币地址投毒攻击深度剖析
  • 【JS逆向百例】某坤行 1101,雪球 1038,新 acw_sc__v2 逆向分析
  • 关于微信小程序申请地理位置接口申请
  • c++学习总结
  • 2025 年大闸蟹蟹卡 / 大闸蟹礼盒 / 大闸蟹礼券 / 好蟹汇大闸蟹选择指南:生态养殖与全国服务双保障解析
  • 【Go 语言神器】iota 到底是什么?为什么高手都爱用它?
  • 2025 年模具生产厂家最新推荐榜单:聚焦优质源头企业,助力工程采购精准选型框格梁模具/框格梁模板/混泥土模具厂家推荐
  • 2025 年最新推荐仿石漆厂家实力厂家口碑排行榜:精选优质环保外墙内墙涂料企业权威揭晓
  • oracle查询存储过程和函数中是否包含某个字符串
  • 2025 年半导体晶片生产厂家最新推荐榜单:专利技术与规模化供货能力双维度深度解析
  • GA/T 1400视图库平台EasyCVR平台GB28181与1400级联方式全解析
  • linux 修改本地时区
  • 深入解析:RabbitMQ:在Linux上安装RabbitMQ
  • 2025 年清洗机厂家最新推荐:高压清洗机 / 超声波清洗机 / 管道清洗机等多类型设备品牌榜单,助力企业精准选购优质产品
  • AI元人文决策范式的思维逻辑演进研究
  • 2025 最新屏蔽泵厂家推荐排行榜揭晓!实力企业深度解析与选购指南,助企业精准选型
  • (JDK,Eclipse,Tomcat版本)Java的web配备Part1 (#by 拌面
  • (数论大杂烩)古代猪文
  • 滥用ACL权限覆盖其他用户S3存储桶中的文件/视频
  • 2025 年净化工程服务商最新权威推荐排行榜:医院净化工程 / 制药厂 / 化工厂 / 实验室 / 无尘车间优选净化工程设计安装施工公司