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

Jacoco 单测覆盖统计工具

基础概念

行覆盖率:度量被测程序的每行代码是否被执行,判断标准行中是否至少有一个指令被执行。

类覆盖率:度量计算class类文件是否被执行。

分支覆盖率:度量if和switch语句的分支覆盖情况,计算一个方法里面的总分支数,确定执行和不执行的 分支数量。

方法覆盖率:度量被测程序的方法执行情况,是否执行取决于方法中是否有至少一个指令被执行。

指令覆盖:计数单元是单个java二进制代码指令,指令覆盖率提供了代码是否被执行的信息,度量完全 独立源码格式。

圈复杂度:在(线性)组合中,计算在一个方法里面所有可能路径的最小数目,缺失的复杂度同样表示测 试案例没有完全覆盖到这个模块。

https://www.jianshu.com/p/639e51c76544

解决方案

Jacoco 简介

JaCoCo(Java Code Coverage)是一个开源的 Java 代码覆盖率统计工具,广泛应用于单元测试、集成测试等场景。它通过字节码插桩技术,动态分析代码执行路径,生成覆盖率报告,帮助开发者评估测试用例的完整性。


Jacoco 核心功能

  • 行覆盖率(Line Coverage):统计代码行是否被执行。
  • 分支覆盖率(Branch Coverage):统计条件分支(如if/else)是否被覆盖。
  • 方法覆盖率(Method Coverage):统计方法是否被调用。
  • 类覆盖率(Class Coverage):统计类是否被加载并执行。

JaCoCo version 0.7.7 implemented a new maven goaljacoco:report-aggregate.

https://www.eclemma.org/jacoco/trunk/doc/report-aggregate-mojo.html

需要额外添加一个子工程『cov』,该工程只有pom文件,文件中引用所有的subProject,并进行jacoco相应的配置(主要是outputDirectory目录)。

编译命令 mvn verify -Pjacoco

<parent> <artifactId>parentProject</artifactId> <groupId>com.jacoco.multimodule.test</groupId> <version>${parent-version}</version> </parent> <modelVersion>4.0.0</modelVersion> <groupId>com.jacoco.multimodule.test</groupId> <artifactId>cov</artifactId> <version>1.0</version> <packaging>pom</packaging> <properties> <maven.deploy.skip>true</maven.deploy.skip> </properties> <profiles> <profile> <id>jacoco</id> <activation> <activeByDefault>false</activeByDefault> </activation> <build> <plugins> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <executions> <execution> <id>default</id> <phase>verify</phase> <goals> <goal>report-aggregate</goal> </goals> <configuration> <outputDirectory>${project.basedir}/../target/site/jacoco</outputDirectory> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> </profiles> <!-- add project module info as below --> <dependencies> <dependency> <groupId>com.jacoco.multimodule.test</groupId> <artifactId>subProject1</artifactId> </dependency> <dependency> <groupId>com.jacoco.multimodule.test</groupId> <artifactId>subProject2</artifactId> </dependency> </dependencies> </project>
Gradle 集成

build.gradle中添加 JaCoCo 插件:

plugins { id 'jacoco' } jacoco { toolVersion = "0.8.8" } test { finalizedBy jacocoTestReport } jacocoTestReport { reports { xml.required = true html.required = true } }

报告默认生成在build/reports/jacoco/目录。

Jacoco 报告解读

  • HTML 报告:可视化展示覆盖率详情,包括代码高亮和未覆盖行标记。
  • XML 报告:适用于与 CI/CD 工具(如 Jenkins、SonarQube)集成。
  • CSV 报告:结构化数据,便于进一步分析。

Jacoco 与 CI/CD 集成

  • Jenkins:通过 JaCoCo 插件解析报告,并在流水线中设置质量门禁。
  • SonarQube:上传 JaCoCo 报告至 SonarQube,实现静态分析与覆盖率结合。

Jacoco 常见问题

  • 覆盖率不准确:检查是否跳过测试(如-DskipTests)或未正确配置插桩。
  • 报告未生成:确认插件版本兼容性及执行阶段是否正确绑定。
  • 性能影响:字节码插桩可能轻微增加测试时间,建议仅在需要时启用。

参考资源

  • 官方文档:JaCoCo 官网

http://www.gsyq.cn/news/1483032.html

相关文章:

  • 【原创开发】瞬净抖音版[特殊字符]无水印解析[特殊字符]一键保存超高清视频图集
  • LangChain4j 开发Java Agent智能体- 工具调用(Function Calling)
  • 2026年6月有实力的邢台大锅炖鱼饭店推荐榜,传统铁锅炖、秘制酱香炖、农家柴火炖选择指南 - 海棠依旧大
  • 2026年 厨房设备厂家:不锈钢商用厨具/中央厨房设备/酒店食堂抽油烟管等全套厨房设备品牌新选 - 品牌发掘
  • 直播间名家字画能入手吗?内行揭秘背后套路 - 深鉴新闻
  • 三步解锁微信聊天记录:本地解密工具的终极指南
  • HCCL 集合通信库架构剖析——昇腾 NPU 多机多卡训练的通信拓扑与协议栈
  • Onekey Steam清单下载工具:让游戏管理变得如此简单
  • Mac NTFS读写困境终结者:免费开源工具Nigate的完整解决方案
  • 2026年6月评价高的江苏工业用制氮机十大厂家哪家靠谱推荐榜,变压吸附/食品级/高纯制氮机生产厂家选择指南 - 海棠依旧大
  • 2026年浙江轴承生产厂家排行及选型参考指南:嘉兴氮化硅陶瓷轴承/嘉兴轴承厂家/嘉兴轴承生产厂家/嘉兴轴承销售厂家/选择指南 - 优质品牌商家
  • 分布式事务反直觉坑位与避坑实战指南
  • 2026年新乡老酒回收机构排行及选购参考指南:新乡茅台酒回收电话/新乡附近上门回收名酒/新乡五粮液回收/新乡新乡名酒回收电话/选择指南 - 优质品牌商家
  • LeetCode 300 674:最长递增子序列 vs 最长连续递增子序列
  • DisplayPort转VGA方案解析:ANX9832芯片设计与工程实践
  • 小米智能家居接入HomeAssistant的终极解决方案:Xiaomi Miot插件深度解析
  • CSDN AI数字营销失效应急手册:过期后7天内恢复卡片曝光的唯一合规路径(含工单模板)
  • Python Scrapy 爬虫实战进阶系列(一):轻量化数据存储 - 数据精准写入 SQLite 数据库
  • 2026年资质齐全的建筑工程管理公司推荐 - myqiye
  • 【分享】C4droid 安卓C++编译器 手机编程超便捷
  • 园林装饰施工公司口碑哪家好 - myqiye
  • 西门子S7-1500通过Profinet直连图尔克TBEN-S2 RFID读写头(含128字节通信工程与说明)
  • TOP5头部机构汇总:五大GEO优化服务商实力竞逐:选型参考与决策指南(2026年6月) - GEO优化
  • 【VibeCoding系列教程11】 AI智能体平台
  • Windows窗口切换效率低下?X-Mouse Controls帮你实现鼠标悬停即激活终极指南
  • 2026乐山本地正规婚介机构排行:眉山婚介公司联系电话/眉山婚姻咨询公司哪家靠谱/眉山婚姻咨询公司联系电话/眉山老年人婚介所推荐/选择指南 - 优质品牌商家
  • Python 爬虫高并发实战:多线程锁机制解决文件写入数据错乱问题
  • CANN ops-transformer 架构深度剖析——从 Host 端到 Device 端的命令流水线与内存管理最佳实践
  • 3分钟解锁B站大会员4K视频下载:开源神器bilibili-downloader完全指南
  • 2026年珠宝免费鉴定技术解析与合规机构指南:南昌铂金高价回收、南昌首饰高价回收、南昌黄金上门回收、南昌黄金即时结算选择指南 - 优质品牌商家