什么是JacocoagentJaCoCoAgent 是 JaCoCo 提供的一个 Java Agent 程序打包在jacocoagent.jar中为了在 JVM 运行时对目标应用的字节码做无侵入插桩从而实时收集代码执行的覆盖率数据是 JaCoCo 实现「运行时覆盖率收集」比如你本地 Debug、APP/Postman 调用接口时收集覆盖率的核心组件。1.下载Jacoco的工具包下载地址EclEmma - JaCoCo Java Code Coverage Library2.用到的jar包jacocoagent插桩jacococli获取报告两个核心 JAR分工完全不同配合起来完成「收集 - 导出 - 生成报告」的全流程简单说jacocoagent.jar「现场采集员」—— 部署在目标应用的 JVM 中实时收集覆盖率数据存在内存中jacococli.jar「远程取数 报告生成器」—— 本地命令行工具不需要挂载到应用 JVM作用是「连接 JaCoCoAgent 导出数据dump」和「将导出的 .exec 文件转换成可视化 HTML 报告」。3.在eciplse中debug/run配置jacocoagent用来它在 Java 程序运行时收集代码覆盖率信息-javaagent:自己的路径jacocoagent.jarincludes*,outputtcpserver,port6300-javaagent:xxx.jar告诉 JVM「加载这个 Java Agent 程序」includes*配置 JaCoCoAgent「收集所有包的覆盖率」可指定com.xxx.*缩小范围outputtcpserver配置 JaCoCoAgent「以 TCP 服务模式运行开放端口供远程 dump 数据」你 Debug 时能随时 dump 的核心port6300配置 JaCoCoAgent「监听 6300 端口」让jacococli.jar能通过这个端口连接并导出数据。4.debug运行程序使用APP调用对应接口jacoco会自动记录对应的运行情况5.获取代码覆盖情况报告5.1使用命令行生成debug-coverage.exec文件# 替换 jacococli.jar 的路径dump 数据到本地java -jar /你的JaCoCo路径/jacococli.jar dump --addresslocalhost --port6300 --destfiledebug-coverage.exec5.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.html7.Jenkins远程部署测试环境生成测试报告可以参考Jenkins集成Jacoco实现覆盖率测试报告-CSDN博客
JaCoCo实战:通过Jacocoagent插桩轻松获取Java覆盖率
什么是JacocoagentJaCoCoAgent 是 JaCoCo 提供的一个 Java Agent 程序打包在jacocoagent.jar中为了在 JVM 运行时对目标应用的字节码做无侵入插桩从而实时收集代码执行的覆盖率数据是 JaCoCo 实现「运行时覆盖率收集」比如你本地 Debug、APP/Postman 调用接口时收集覆盖率的核心组件。1.下载Jacoco的工具包下载地址EclEmma - JaCoCo Java Code Coverage Library2.用到的jar包jacocoagent插桩jacococli获取报告两个核心 JAR分工完全不同配合起来完成「收集 - 导出 - 生成报告」的全流程简单说jacocoagent.jar「现场采集员」—— 部署在目标应用的 JVM 中实时收集覆盖率数据存在内存中jacococli.jar「远程取数 报告生成器」—— 本地命令行工具不需要挂载到应用 JVM作用是「连接 JaCoCoAgent 导出数据dump」和「将导出的 .exec 文件转换成可视化 HTML 报告」。3.在eciplse中debug/run配置jacocoagent用来它在 Java 程序运行时收集代码覆盖率信息-javaagent:自己的路径jacocoagent.jarincludes*,outputtcpserver,port6300-javaagent:xxx.jar告诉 JVM「加载这个 Java Agent 程序」includes*配置 JaCoCoAgent「收集所有包的覆盖率」可指定com.xxx.*缩小范围outputtcpserver配置 JaCoCoAgent「以 TCP 服务模式运行开放端口供远程 dump 数据」你 Debug 时能随时 dump 的核心port6300配置 JaCoCoAgent「监听 6300 端口」让jacococli.jar能通过这个端口连接并导出数据。4.debug运行程序使用APP调用对应接口jacoco会自动记录对应的运行情况5.获取代码覆盖情况报告5.1使用命令行生成debug-coverage.exec文件# 替换 jacococli.jar 的路径dump 数据到本地java -jar /你的JaCoCo路径/jacococli.jar dump --addresslocalhost --port6300 --destfiledebug-coverage.exec5.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.html7.Jenkins远程部署测试环境生成测试报告可以参考Jenkins集成Jacoco实现覆盖率测试报告-CSDN博客