什么是Jacocoagent

JaCoCoAgent 是 JaCoCo 提供的一个 Java Agent 程序(打包在 jacocoagent.jar 中),为了在 JVM 运行时对目标应用的字节码做无侵入插桩,从而实时收集代码执行的覆盖率数据,是 JaCoCo 实现「运行时覆盖率收集」(比如你本地 Debug、APP/Postman 调用接口时收集覆盖率)的核心组件

1.下载Jacoco的工具包

下载地址EclEmma - JaCoCo Java Code Coverage Library

2.用到jarjacocoagentjacococli获取报告

两个核心 JAR,分工完全不同,配合起来完成「收集 - 导出 - 生成报告」的全流程,简单说:

  • jacocoagent.jar:「现场采集员」—— 部署在目标应用的 JVM 中,实时收集覆盖率数据,存在内存中;

  • jacococli.jar:「远程取数 + 报告生成器」—— 本地命令行工具,不需要挂载到应用 JVM,作用是「连接 JaCoCoAgent 导出数据(dump)」和「将导出的 .exec 文件转换成可视化 HTML 报告」。

      3.在eciplse中debug/run配置jacocoagent用来它在 Java 程序运行时收集代码覆盖率信息

      -javaagent:自己路径jacocoagent.jar=includes=*,output=tcpserver,port=6300

      • -javaagent:xxx.jar:告诉 JVM「加载这个 Java Agent 程序」;

      • includes=*:配置 JaCoCoAgent「收集所有包的覆盖率」(可指定 com.xxx.* 缩小范围);

      • output=tcpserver:配置 JaCoCoAgent「以 TCP 服务模式运行,开放端口供远程 dump 数据」(你 Debug 时能随时 dump 的核心);

      • port=6300:配置 JaCoCoAgent「监听 6300 端口」,让 jacococli.jar 能通过这个端口连接并导出数据。

      4.debug运行程序使用APP调用对应接口jacoco自动记录对应运行情况

      5.获取代码覆盖情况报告

      5.1使用命令行生成debug-coverage.exec文件:

      # 替换 jacococli.jar 的路径,dump 数据到本地

      java -jar /你的JaCoCo路径/jacococli.jar dump --address=localhost --port=6300 --destfile=debug-coverage.exec

      5.2在使用命令行生可视化报告

      java -jar /你的JaCoCo路径/jacococli.jar report debug-coverage.exec \

      --classfiles /你的项目/target/classes \ # 项目编译后的class文件

      --sourcefiles /你的项目/src/main/java \ # 项目源码

      --html ./debug-coverage-report # 生成HTML报告

      6.打开报告文件的index.html

      Logo

      有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

      更多推荐