当前位置: 首页 > 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.jsqmd.com/news/971305/

相关文章:

  • 2026年6月口碑好的苏州板式办公桌厂家选择推荐榜:板式办公桌、实木办公桌、钢制办公桌品牌选择指南 - 海棠依旧大
  • 【原创开发】瞬净抖音版[特殊字符]无水印解析[特殊字符]一键保存超高清视频图集
  • 跨平台Steam创意工坊下载器WorkshopDL:技术架构与多引擎下载方案深度解析
  • LangChain4j 开发Java Agent智能体- 工具调用(Function Calling)
  • 别再死磕公式了!用Python+NumPy从零实现TDOA定位(附完整代码与实测数据)
  • 2026年6月评价高的家庭养老防滑处理公司找哪家推荐榜,专业防滑地垫、防滑剂施工、防滑扶手公司选择指南 - 海棠依旧大
  • 3分钟解锁中兴光猫隐藏功能:zteOnu工具终极指南
  • 比利时银行业网络钓鱼欺诈赔偿规则与综合防御研究
  • 2026年6月有实力的苏州鱼粉厂家怎么选推荐榜,秘鲁蒸汽鱼粉、智利进口鱼粉、国产脱脂鱼粉厂家选择指南 - 海棠依旧大
  • YouTube推荐系统技术拆解:多目标优化与实时反馈闭环
  • 终极macOS清理指南:使用Pearcleaner彻底告别应用残留文件
  • 能让不同架构的gpu一起训练 跨芯片统一、异构混合训练、自动并行调优
  • 2026年6月口碑好的杭州盆景租摆公司怎么选推荐榜,办公室/酒店/园区/家居盆景租摆公司选择指南 - 海棠依旧大
  • 2026年Q2成都园区物业管理公司选型技术维度全解析:成都学校保洁公司/成都家庭保洁公司/成都开荒保洁公司/成都物业保洁服务/选择指南 - 优质品牌商家
  • 直播间名家字画能入手吗?内行揭秘背后套路 - 深鉴新闻
  • Zotero GPT插件:5步搭建你的AI学术研究助手
  • 2026年 厨房设备厂家:不锈钢商用厨具/中央厨房设备/酒店食堂抽油烟管等全套厨房设备品牌新选 - 品牌发掘
  • WinBtrfs终极指南:在Windows上无缝读写Btrfs文件系统的完整解决方案
  • PotPlayer字幕实时翻译:突破语言障碍的终极技术方案
  • 2026年6月有实力的邢台大锅炖鱼饭店推荐榜,传统铁锅炖、秘制酱香炖、农家柴火炖选择指南 - 海棠依旧大
  • 2026年沧州工商注册公司推荐,有注册会计师团队的有哪些? - mypinpai
  • 抖音视频下载神器:如何一键获取无水印高清内容
  • 三步解锁微信聊天记录:本地解密工具的终极指南
  • 如何快速跳过FF14副本动画:终极ACT插件配置指南
  • 数控系统软件的研究与开发(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • Mac NTFS读写困境终结者:免费开源工具Nigate的完整解决方案
  • OpenCore Legacy Patcher深度解析:5个实战技巧让老旧Mac焕发新生
  • HCCL 集合通信库架构剖析——昇腾 NPU 多机多卡训练的通信拓扑与协议栈
  • 一站式游戏编辑器:Harepacker-resurrected完全指南
  • 2026年 名酒回收/老酒回收/白酒回收服务:茅台、五粮液、洋酒、虫草、片仔癀上门现金回收公司专业评估报告 - 品牌发掘