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