徒手运行Jacoco Agent

tech2024-08-06  147

Jacoco 通过Jacoco Agent完成one-the-fly模式插桩,如果借用maven插件jacoco-maven-plugin,你会对jacoco agent的存在无感知,jacoco-maven-plugin插件的执行过程就是通过jacoco agent完成对代码的插桩,并生成jacocoagent.exec,这个文件只包括运行的插桩信息,用来统计覆盖率用。接下来我们手动运行jacoco agent并生产插桩文件,最后生成覆盖率报告。

编译Jacoco 下载Jacoco源代码(https://github.com/jacoco/jacoco/tree/master)并编译。

创建测试代码

public class Test { public static void main(String[] args) { int a = 1; if (a == 1) { a += 1; } else { a += 2; } System.out.println(a); } }

编译

-g 编译时加入debug信息,统计行覆盖率时用。

javac -g -d test

运行

指定javaagent,并运行编译后的java字节码。此过程完成字节码插桩,并产出插桩执行信息文件jacocoagent.exec。

java -javaagent:../org.jacoco.agent/target/classes/jacocoagent.jar Test

产生覆盖率报告 通过jacocoagent.exec产出覆盖率报告 一是可以通过idea完成,run->show coverage data,导入jacocoagent.exec会在窗口展示覆盖率信息; 二是可以通过cli完成:

java -jar ../org.jacoco.cli/target/org.jacoco.cli-0.8.6-SNAPSHOT-nodeps.jar report jacoco.exec --classfiles ./ --html ./
最新回复(0)