一文搞懂JaCoCo Java代码覆盖率工具

Java单元覆盖率工具JaCoCo详细理解和使用(配置+示例) 一、代码覆盖率理解 代码覆盖(Code coverage)是软件测试中的一种度量,描述程序中源代码被测试的比例和程度,所得比例称为代码覆盖率。 简单来理解,就是单元测试中代码执行量与代码总量之间的比率。 Java常用的单元测试覆盖率框架有:JaCoCo、EMMA和Cobertura,本篇文章主要介绍JaCoCo的使用。 二、JaCoCo理解 JaCoCo官方文档:https://www.eclemma.org/jacoco/trunk... 阅读详情
AI摘要

JaCoCo是一款免费的Java代码覆盖率工具,提供多种覆盖率指标,如指令、分支、行覆盖等。它通过插桩技术动态或静态地注入探针来收集覆盖率数据。JaCoCo支持on-the-fly和offline两种模式,前者适用于大多数场景,后者在特定情况下更适用。在实际使用中,JaCoCo可以通过Ant Tasks、JavaAgent、Maven插件、Eclipse插件和Jenkins集成等方式进行集成。通过命令行参数配置,例如-JavaAgent,可以指定JaCoCo的输出模式和数据文件。生成的覆盖率报告可以帮助开发者了解代码的测试覆盖情况。

目录

1. JaCoCo 简介

2. JaCoCo 原理

2.1 on-the-fly模式

2.2 offline模式

2.3 on-the-fly和offline对比

3. JaCoCo 使用

3.1 Ant Tasks —— Apache Ant 方式

3.2 Java Agent —— 命令行方式

3.2.1 官方介绍

3.2.2 流程说明

3.2.3 举例

3.3 Maven Plug-in —— Apache Maven 方式

3.4 Eclipse EclDmma Plugin 方式

3.5 Jenkins集成


参考资料:

官方文档

JAVA代码覆盖率工具JaCoCo-原理篇

JAVA代码覆盖率工具JaCoCo-实践篇

JaCoCo控制流分析

 

1. JaCoCo 简介

JaCoCo Java Code Coverage Library

JaCoCo is a free code coverage library for Java, which has been created by the EclEmma team based on the lessons learned from using and integration existing libraries for many years.

 

是一个免费的Java代码覆盖库。

JaCoCo包含了多种尺度的覆盖率计数器,包含指令级覆盖(Instructions,C0coverage),分支(Branches,C1coverage)、圈复杂度(CyclomaticComplexity)、行覆盖(Lines)、方法覆盖(non-abstract methods)、类覆盖(classes)。

 

  • 标示绿色的为行覆盖充分
  • 标红色的为未覆盖的行
  • 黄色菱形的为分支部分覆盖
  • 绿色菱形为分支完全覆盖

 

2. JaCoCo 原理

Jacoco使用插桩的方式来记录覆盖率数据,是通过一个probe探针来注入。

插桩模式有两种:

2.1 on-the-fly模式

JVM通过 -javaagent参数指定jar文件启动代理程序,代理程序在ClassLoader装载一个class前判断是否修改class文件,并将探针插入class文件,探针不改变原有方法的行为,只是记录是否已经执行。

2.2 offline模式

在测试之前先对文件进行插桩,生成插过桩的class或jar包,测试插过桩的class和jar包,生成覆盖率信息到文件,最后统一处理,生成报告。

2.3 on-the-fly和offline对比

on-the-fly更方便简单,无需提前插桩,无需考虑classpath设置问题。

以下情况不适合使用on-the-fly模式:

(1)不支持javaagent

(2)无法设置JVM参数

(3)字节码需要被转换成其他虚拟机

(4)动态修改字节码过程和其他agent冲突

(5)无法自定义用户加载类

 

3. JaCoCo 使用

 

3.1 Ant Tasks —— Apache Ant 方式

参见 https://www.eclemma.org/jacoco/trunk/doc/ant.html

 

3.2 Java Agent —— 命令行方式

参见

http://www.eclemma.org/jacoco/trunk/doc/agent.html

https://www.jacoco.org/jacoco/trunk/doc/cli.html

3.2.1 官方介绍

JaCoCo使用class文件插桩来记录执行覆盖率数据。class文件是使用Java代理(Java agent)动态检测的。这种机制允许在类加载期间独立于应用程序框架对所有类文件进行内存预处理。

JaCoC

jacoco增量覆盖率实践 Jacoco增量覆盖率说明 能找到这里,说明对jacoco的原理和使用有了一定的了解,而我写这边文章主要是网络上基本没有完整文档加代码的jaocco增量覆盖说明,所以我想分享些东西让需要这方面的人快速去实现自己想要的功能,那么如果想实现增量代码覆盖率需要做到哪些工作呢?(格式难看到这里看http://note.youdao.com/s/6gM8ONX3) 大家在网络上找到的实现方式无外乎三种 获取到增量代码,在jacoco进行插桩时判断是否是增量代码后再进行插桩,这样需要两个步骤,一是获取增量代码,二 阅读详情

相关推荐

jacoco增量覆盖率平台开发

先聊聊做这个平台的意义,从项目管理角度来说,测试说项目测试完成,该如何证明呢?一般情况下我们进行验收时没什么问题就算完成了,但是实际上测试很多情况并没有考虑到。所以该平台可以反哺测试的测试用例,让平台质量把控上升一个层次,其次可以作为产品验收的标准。覆盖率至少达到百分90才可以发布到生产。为什么时百分90不是百分百,作为开发人员有很多时候会写一些防止报错的异常代码,这部分代码可能正常情况下是永远执行不到的。

a807719447的专栏 4194

Jacoco增量代码覆盖率

jacoco增量代码覆盖率 作者:兰绿,荣荣 文章结构 背景 Jacoco简介 Jacoco 增量代码覆盖率设计方案 Jacoco增量代码覆盖率+持续交付 总结 一、背景 需求测试过程中,测试主要依靠需求及一些测试经验来主观保证质量。为了解决测试度量不清晰的问题,测试用jacoco从代码层面衡量测试覆盖率。分析未覆盖部分代码,从而反推前期测试设计是否重复,没有覆盖到的代码是否是测试设计的盲点。代码覆盖率可以作为测试自我审视的重要工具之一。 jacoco代码覆盖率统计的是全量代码覆盖率,报告冗余,影响我

rr18758236029的博客 1万+

【腾讯TMQ】JAVA代码覆盖率工具JaCoCo-原理篇

如果你的项目是JAVA的,相信我~,覆盖率工具选择JaCoCo是一个非常明智的选择。

TMQ1225的博客 1万+

Java代码覆盖率工具(Sonar+Jacoco)部署

代码覆盖率的局限 Java代码覆盖率工具调研 使用jacoco+sonar实现测试过程中的代码覆盖率检测 jacoco+sonar部署步骤及使用

wangxinyao318的专栏 2万+

JaCoCo 统计自动化测试代码覆盖率

1. 为什么要关注测试覆盖率:代码覆盖: 设计测试用例的时候我们会考虑程序的逻辑,需要考虑到每个函数的输入与输出,逻辑分支代码的执行,这个时候我们的测试执行情况就需要一定的数据来衡量。 我们用代码覆盖率的结果来反向检查覆盖用例是否充分完整。 2. JaCoCo是什么: java主要代码覆盖工具:EMMA、JaCoCo JaCoCo是一个开源的覆盖率工具(官网地址: [https://www.j...

weixin_41407477的博客 5322

二、jacoco代码覆盖率工具的安装与使用

JaCoCo 是一个免费的Java 代码覆盖库,它是由EcIEmma 团队根据多年来使用和集成现有库的经验教训创建的。

好多可乐的博客 2439

测试 Wi-Fi、蓝牙性能

前几天去原厂测试了 Wi-Fi 和蓝牙的性能,现在把了解到的知识总结一下 RF通路新理解 RF通路一般分为两部分:芯片端、天线端 芯片端 芯片端包括芯片+芯片出来的RF匹配电路,是来调芯片的阻抗匹配的。 天线端 天线前一般也会有一段天线匹配电路,是留给天线调天线的阻抗匹配的。 调试的时候是两部分分开调试的,下面调试的就是芯片端。 测试“阻抗匹配”用网络分析仪看史密斯圆图 测试...

撒哈拉的初学者的博客 1万+

优雅谈大模型:“System2”与“System 1”

研究人员探索了三种System 2方法——RaR、S2A 和 BSM,这些方法已经成功提炼到新的LLM,这个新的模型与System 1相比,产生了更好的结果,而且成本低于System 2。然而这种方法是有局限性,只能适用于特定的任务。

鲁班模锤 5157

Unity VR 零基础开发之 Pico4 MR

2、弹出弹窗后,点击Android选项,然后再点击Switch Platform按钮切换成安卓平台。3、切换完成后Android选项后面会显示unity图标。

十画的博客 5104

FLUKA软件在Ubuntu的安装指南(亲测有效)

FLUKA其强大的蒙特卡洛模拟能力使得用户能够模拟复杂的辐射相互作用过程

chencheng1127的博客 2887

图神经网络实战(1)——图神经网络(Graph Neural Networks, GNN)基础

本节全面介绍了图神经网络 (Graph Neural Network, GNN) ,包括其在数据分析和机器学习中的重要性。首先探讨了图作为数据表示的相关概念及其在各个领域的广泛应用;然后深入探讨图学习的重要性,包括不同的应用和技术。最后,重点介绍了 GNN 架构,并对比了它与其他方法之间的原理和性能差异。

盼小辉丶的博客 15万+

华为OD机试双机位C卷-热点网站统计 (Py/Java/C/C++/Js/Go)

华为OD机试双机位C卷 热点网站统计,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。 华为od机考真题 - 热点网站统计。

qq_45776114的博客 779

Orin 调试GMSL camera 96712手册重点

96712基础理解

乐于分享 9195

2026实战:YOLOv11融合Swin Transformer,小目标检测精度暴涨47%

本文针对工业零件微小缺陷检测难题,提出了一种CNN与Transformer的最优融合方案。作者发现直接替换YOLOv11骨干网络为Swin Transformer会导致速度骤降69%而精度仅提升2.1%。通过大量实验,总结出三项核心设计原则:1)CNN为主、Transformer为辅;2)高层插入、浅层保留;3)模块化融合。最终提出三种渐进式融合方案,其中骨干部分替换方案(方案二)实现了小目标检测精度提升47%,推理速度仅下降8%的优异表现。文章详细解析了Swin Transformer的核心原理,提供了完

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 514

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

上一篇: ActiveMQ详解二 —— ActiveMQ问题总结
下一篇: Java基础:Java与C++的语言特性区别
码拉小农虾
博客等级 码龄15年 15粉丝 24原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值