1. JaCoCo简介与安装

做测试的,没人能绕过覆盖率这道坎。我刚开始做测试那会儿,团队还在用"跑了多少用例"这种土办法评估质量。说白了,那时候心里完全没底。后来接触了JaCoCo,才发现代码覆盖率可以做得这么精细。这工具几乎成了我工具箱里的标配。

JaCoCo 知识体系 JaCoCo 核心概念 发展历史 适用场景 安装配置 Maven Gradle Ant CLI Java 代码覆盖率分析利器 支持行覆盖率 · 分支覆盖率 · 增量覆盖率

1.1 什么是JaCoCo

JaCoCo 的全称是 Java Code Coverage。说白了,它就是帮你揪出"哪些代码被测试跑过、哪些代码还没被测试宠幸过"的工具。

它能分析的覆盖率指标有五个维度:

  • 指令覆盖率 (Instruction) —— 最细的粒度,统计字节码指令的执行情况。你可以理解为"CPU 到底跑了哪些指令"。
  • 行覆盖率 (Line) —— 统计每一行代码是否被执行。这个最直观,红绿标记一看就懂。
  • 分支覆盖率 (Branch) —— 统计 if/else、switch 等分支的覆盖情况。光覆盖了行还不够,每个条件分支都得跑到才算数。
  • 方法覆盖率 (Method) —— 统计哪些方法被调用过。有些工具类方法常年没人管,一查一个准。
  • 类覆盖率 (Class) —— 统计哪些类被加载过。通常在集成测试阶段更有参考价值。

我个人最常用的是行覆盖率和分支覆盖率。行覆盖率告诉你"哪行跑了",分支覆盖率告诉你"哪个条件跑了"。你想想看,这两个一结合,测试的底裤基本就看穿了。

💡 小提示: JaCoCo 是无侵入式的。它通过 Java Agent 在 JVM 启动时挂载,不需要修改你的业务代码。这对老项目接入特别友好。

1.2 发展历史

JaCoCo 的前身是 EMMA。EMMA