JaCoCo
JaCoCo 是 Java 代码覆盖率统计工具,用来统计单元测试跑了多少代码、哪些代码没走到,学生/新手直接跟着一步步做就行。
本文分两种最常用场景:IDEA 直接使用(零配置)、Maven 项目(标准开发用法),全程最简、无复杂配置。
一、先搞懂 3 个基础概念
-
代码覆盖率:单元测试执行时,走到的代码占总代码的比例。
-
JaCoCo:Java 主流覆盖率工具,免费、开源,集成在 IDEA/Maven/Gradle。
-
常见覆盖率指标(只记 2 个够用):
-
行覆盖率(Line):代码行有没有被执行到(最常用)
-
分支覆盖率(Branch):
if/else、switch所有分支有没有都走到 -
?
-
二、环境准备
必备:
-
IntelliJ IDEA(社区版/旗舰版都行)
-
JDK 8+
-
自带 JUnit 单元测试(IDEA 默认集成)
不用单独装 JaCoCo!IDEA 内置了,开箱即用。
三、Demo 1:IDEA 原生 JaCoCo
Step 1:新建普通 Java 项目
-
打开 IDEA →
New Project -
名称:
JaCoCo-Demo,构建工具选:IntelliJ(不要选Maven) -
JDK 选本地已配置版本,点击创建。
Step 2:编写业务代码
在 src/main/java 下新建类 Calculate.java
public class Calculate { // 简单加减判断,包含 if 分支,方便看覆盖率 public int add(int a, int b) { return a + b; } public String checkNum(int num) { if (num > 0) { return "正数"; } else if (num < 0) { return "负数"; } else { return "零"; } } }
Step 3:编写 JUnit 单元测试
-
右键
Calculate.java→Generate→Test -
测试框架选择 JUnit ,勾选所有方法,确定。
-
IDEA 自动在
src/test/java生成CalculateTest.java,写入测试代码:
import org.junit.Test; import static org.junit.Assert.*; public class CalculateTest { Calculate calc = new Calculate(); // 测试加法 @Test public void add() { int res = calc.add(1, 2); assertEquals(3, res); } // 只测试 正数 一个分支(故意不全测,看覆盖率效果) @Test public void checkNum() { String res = calc.checkNum(10); assertEquals("正数", res); } }
Step 4:配置 IDEA 使用 JaCoCo
-
顶部菜单栏:
Run→Edit Configurations -
左侧找到 JUnit → 选中你当前的测试类配置
-
右侧切换到 Code Coverage 标签页

-
Coverage runner 选择:JaCoCo(默认可能是 Idea,改成 JaCoCo)
-
点击
Apply→OK
Step 5:运行测试 + 查看覆盖率报告
-
右键
CalculateTest.java→ Run 'CalculateTest' with Coverage -
运行完成后,底部出现 Coverage 面板
看懂颜色(核心!小白必记)
-
绿色:代码被测试执行到(覆盖)
-
红色:代码完全没执行(未覆盖)
-
黄色:分支部分执行(if/else 只走了一部分)
效果说明
你会看到:
-
add方法全绿(100%覆盖) -
checkNum里:num>0绿,num<0和else红(因为我们只测了正数) -
底部面板会显示:行覆盖率、分支覆盖率 数值
Step 6:补全测试,达到 100% 覆盖
修改 checkNum 测试方法,把所有分支都测一遍:
@Test public void checkNum() { assertEquals("正数", calc.checkNum(10)); assertEquals("负数", calc.checkNum(-5)); assertEquals("零", calc.checkNum(0)); }
再次 Run with Coverage → 全部代码变绿色,覆盖率 100%。
四、Demo 2:Maven 项目集成 JaCoCo(企业标准用法)
实际开发基本用 Maven/Gradle,下面是最简 Maven 配置,复制即用。
Step 1:新建 Maven 项目
-
新建项目 → 选择 Maven
-
勾选
Create from archetype→ 选maven-archetype-quickstart -
填写项目名,完成创建。
Step 2:修改 pom.xml(核心配置)
打开根目录 pom.xml,做 2 件事:
-
引入 JUnit 测试依赖
-
配置 JaCoCo 插件
完整可直接复制的 pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.demo</groupId> <artifactId>jacoco-maven-demo</artifactId> <version>1.0</version> <!-- 统一 JDK 版本 --> <properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <!-- 1. JUnit 依赖 --> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> </dependencies> <!-- 2. Maven 插件:JaCoCo 覆盖率 --> <build> <plugins> <!-- JaCoCo 插件 最简配置 --> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.12</version> <executions> <!-- 第一步:执行测试并收集覆盖率数据 --> <execution> <id>prepare-agent</id> <goals> <goal>prepare-agent</goal> </goals> </execution> <!-- 第二步:生成 HTML/XML 可视化报告 --> <execution> <id>report</id> <phase>test</phase> <goals> <goal>report</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
Step 3:编写业务代码 & 测试代码
和上一个 Demo 完全一样:
-
src/main/java/com/demo/Calculate.java(同上代码) -
src/test/java/com/demo/CalculateTest.java(同上测试代码)
Step 4:执行 Maven 命令,生成覆盖率报告
两种运行方式,任选其一:
方式1:IDEA 图形化
-
右侧打开 Maven 面板
-
展开项目 →
Lifecycle→ 双击 test -
Maven 会自动:编译代码 → 运行单元测试 → 执行 JaCoCo → 生成报告
方式2:命令行
打开终端,进入项目根目录,执行:
mvn test
Step 5:查看 Maven 生成的报告(网页版)
执行完成后,报告路径固定:
项目根目录/target/site/jacoco/index.html
-
进入该目录
-
双击
index.html,用浏览器打开 -
页面可以:
-
查看整体覆盖率
-
点击类 → 查看每一行代码覆盖情况(同样红绿区分)
-
五、常用命令 & 常见问题
1. 常用 Maven 命令
-
mvn test:运行测试 + 生成 JaCoCo 报告(最常用) -
mvn clean test:先清空旧文件,再重新测试生成报告
2. 常见报错 & 解决
-
测试代码不执行、覆盖率 0%
-
原因:测试类/方法没加
@Test注解 -
解决:补上 JUnit 注解,测试类放在
src/test/java下
-
-
pom 爆红、依赖下载失败
-
解决:刷新 Maven(IDEA 右上角刷新按钮),检查网络/镜像源
-
-
JaCoCo 插件找不到
-
解决:直接用上面给的固定版本
0.8.12,不要写最新版
-
六、学习总结
-
JaCoCo 作用:统计 Java 单元测试代码覆盖率。
-
IDEA 快速用:Run → Edit Configurations → Code Coverage 选 JaCoCo,右键
Run with Coverage,看红绿代码。 -
Maven 标准用法:pom 引入 jacoco 插件 →
mvn test→ 打开target/site/jacoco/index.html网页报告。 -
颜色规则:绿=已覆盖,红=未覆盖,黄=分支未全走。
更多推荐



所有评论(0)