JaCoCo 是 Java 代码覆盖率统计工具,用来统计单元测试跑了多少代码、哪些代码没走到,学生/新手直接跟着一步步做就行。

本文分两种最常用场景:IDEA 直接使用(零配置)Maven 项目(标准开发用法),全程最简、无复杂配置。


一、先搞懂 3 个基础概念

  1. 代码覆盖率:单元测试执行时,走到的代码占总代码的比例。

  2. JaCoCo:Java 主流覆盖率工具,免费、开源,集成在 IDEA/Maven/Gradle。

  3. 常见覆盖率指标(只记 2 个够用):

    1. 行覆盖率(Line):代码行有没有被执行到(最常用)

    2. 分支覆盖率(Branch)if/else、switch 所有分支有没有都走到

    3. ?


二、环境准备

必备:

  1. IntelliJ IDEA(社区版/旗舰版都行)

  2. JDK 8+

  3. 自带 JUnit 单元测试(IDEA 默认集成)

不用单独装 JaCoCo!IDEA 内置了,开箱即用。


三、Demo 1:IDEA 原生 JaCoCo

Step 1:新建普通 Java 项目

  1. 打开 IDEA → New Project

  2. 名称:JaCoCo-Demo构建工具选:IntelliJ(不要选Maven)

  3. 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 单元测试

  1. 右键 Calculate.javaGenerateTest

  2. 测试框架选择 JUnit ,勾选所有方法,确定。

  3. 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

  1. 顶部菜单栏:RunEdit Configurations

  2. 左侧找到 JUnit → 选中你当前的测试类配置

  3. 右侧切换到 Code Coverage 标签页

  1. Coverage runner 选择:JaCoCo(默认可能是 Idea,改成 JaCoCo)

  2. 点击 ApplyOK

Step 5:运行测试 + 查看覆盖率报告

  1. 右键 CalculateTest.javaRun 'CalculateTest' with Coverage

  2. 运行完成后,底部出现 Coverage 面板

看懂颜色(核心!小白必记)

  • 绿色:代码被测试执行到(覆盖)

  • 红色:代码完全没执行(未覆盖)

  • 黄色:分支部分执行(if/else 只走了一部分)

效果说明

你会看到:

  • add 方法全绿(100%覆盖)

  • checkNum 里:num>0 绿,num<0else 红(因为我们只测了正数)

  • 底部面板会显示:行覆盖率、分支覆盖率 数值

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 项目

  1. 新建项目 → 选择 Maven

  2. 勾选 Create from archetype → 选 maven-archetype-quickstart

  3. 填写项目名,完成创建。

Step 2:修改 pom.xml(核心配置)

打开根目录 pom.xml,做 2 件事:

  1. 引入 JUnit 测试依赖

  2. 配置 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 完全一样:

  1. src/main/java/com/demo/Calculate.java(同上代码)

  2. src/test/java/com/demo/CalculateTest.java(同上测试代码)

Step 4:执行 Maven 命令,生成覆盖率报告

两种运行方式,任选其一:

方式1:IDEA 图形化

  1. 右侧打开 Maven 面板

  2. 展开项目 → Lifecycle → 双击 test

  3. Maven 会自动:编译代码 → 运行单元测试 → 执行 JaCoCo → 生成报告

方式2:命令行

打开终端,进入项目根目录,执行:


mvn test

Step 5:查看 Maven 生成的报告(网页版)

执行完成后,报告路径固定:


项目根目录/target/site/jacoco/index.html

  1. 进入该目录

  2. 双击 index.html,用浏览器打开

  3. 页面可以:

    1. 查看整体覆盖率

    2. 点击类 → 查看每一行代码覆盖情况(同样红绿区分)


五、常用命令 & 常见问题

1. 常用 Maven 命令

  • mvn test:运行测试 + 生成 JaCoCo 报告(最常用)

  • mvn clean test:先清空旧文件,再重新测试生成报告

2. 常见报错 & 解决

  1. 测试代码不执行、覆盖率 0%

    1. 原因:测试类/方法没加 @Test 注解

    2. 解决:补上 JUnit 注解,测试类放在 src/test/java

  2. pom 爆红、依赖下载失败

    1. 解决:刷新 Maven(IDEA 右上角刷新按钮),检查网络/镜像源

  3. JaCoCo 插件找不到

    1. 解决:直接用上面给的固定版本 0.8.12,不要写最新版


六、学习总结

  1. JaCoCo 作用:统计 Java 单元测试代码覆盖率。

  2. IDEA 快速用:Run → Edit Configurations → Code Coverage 选 JaCoCo,右键 Run with Coverage,看红绿代码。

  3. Maven 标准用法:pom 引入 jacoco 插件 → mvn test → 打开 target/site/jacoco/index.html 网页报告。

  4. 颜色规则:绿=已覆盖,红=未覆盖,黄=分支未全走。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐