跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

SpringBoot 接入 JaCoCo 实践:代码覆盖率统计

SpringBoot 项目集成 JaCoCo 工具可实现代码覆盖率统计,支持 Maven 静态接入与 Agent 动态接入两种方式。Maven 方式在编译阶段计算覆盖率,通过配置插件生成报告;Agent 方式在服务运行时实时检测字节码,支持手动调用接口或单元测试触发数据收集。通过 javaagent 代理机制,可在服务运行期间捕获代码命中情况并生成 HTML 报告,便于评估测试覆盖质量。

灵魂摆渡发布于 2025/1/18更新于 2026/9/1058 浏览
SpringBoot 接入 JaCoCo 实践:代码覆盖率统计

SpringBoot 接入 JaCoCo 实践:代码覆盖率统计

概述

JaCoCo 是面向 Java 的开源代码覆盖率工具,以 Java 代理模式运行,负责在测试运行时检测字节码。JaCoCo 深入分析每个指令,显示测试过程中执行的行。为了收集覆盖率数据,JaCoCo 使用 ASM 即时进行代码检测,并从 JVM Tool Interface 接收事件,最终生成代码覆盖率报告。

接入

SpringBoot 可以通过两种主要方式接入 JaCoCo:Maven 和 Agent。Maven 方式是静态接入,在编译时计算代码覆盖率;Agent 方式是动态接入,服务启动后能实时根据代码命中情况计算覆盖率。

Maven 方式

在 pom.xml 中添加依赖:

<dependency>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.8.7</version>
</dependency>

添加构建配置:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>${project.parent.version}</version>
        </plugin>
        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.8.7</version>
            <executions>
                <execution>
                    <id>default-prepare-agent</id>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                </execution>
                <execution>
                    <id>default-report</id>
                    <goals>
                        <goal>report</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

使用以下命令生成报告:

mvn clean verify

Agent 方式

下载 jacoco 文件后解压,提取两个文件。使用命令启动 SpringBoot,启动参数添加 -javaagent:

java -javaagent:jacoco/jacocoagent.jar -jar target/mini-0.0.1-SNAPSHOT.jar

此时会生成一个 jacoco.exec 文件,即覆盖率数据文件。采用以下命令根据数据文件生成 HTML 报告:

java -jar jacoco/jacococli.jar report jacoco.exec --classfiles ./target/classes/ --sourcefiles ./src/main/java/ --html ./report

接下来验证动态特性。删除 report 目录和 jacoco.exec 文件,因为 JaCoCo 每次部署只能分析一次。停止服务后重新启动。先通过 Postman 调用接口,然后再次执行报告生成命令。此时可观察到覆盖率更新为 100%,说明接口调用命中了代码并被 JaCoCo 统计到。JavaAgent 相当于代理,在服务运行期间,所有调用都会经过 JavaAgent,从而实时统计代码覆盖率。只要服务运行起来,无论是跑单元测试、调接口还是手工测试,都能生成代码覆盖率数据。

目录

  1. SpringBoot 接入 JaCoCo 实践:代码覆盖率统计
  2. 概述
  3. 接入
  4. Maven 方式
  5. Agent 方式

更多推荐文章

查看全部
  • Docker 部署 OpenClaw 本地 AI 执行引擎(智谱 AI 版)
  • TRAE SOLO 远程开发体验与 cpolar 内网穿透方案
  • C++ STL 详解:从零实现 vector 容器
  • RV1106 基于 libdatachannel 的 4G WebRTC 实时视频传输方案
  • Whisper Large v3 模型解析:语音特征提取与处理机制
  • physipy: 使 Python 具有单位感知
  • Web 服务与 I/O 模型
  • Java ArrayList 底层原理与核心方法手写实现
  • 从软件工程视角理解低代码的价值、边界与演进路径
  • C++ 智能指针:使用场景、实现原理与内存泄漏防治
  • Flutter 底部导航与 TabBar 多页切换实战及鸿蒙适配
  • ROS2 在 RViz 中可视化 URDF 机器人模型
  • 深入理解 OpenWebF/WebF:跨平台应用开发方案
  • LangGraph 入门与实战:基于 Agent 状态机的工具调用实践
  • AI 实践:工具函数调用(Function Calling)实战指南
  • C 语言入门指南:核心特性与快速上手
  • Pi Coding Agent 编码工具架构模式解析
  • SpringBoot+Vue 校园网上店铺系统设计与实现
  • FPGA 主流硬件描述语言与开发工具指南
  • 基于 Trae Solo 与大模型构建智能菜单识别应用

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online