使用jacoco来统计代码覆盖率时,用java来清空覆盖率数据或者输出覆盖率数据
一、相关包
1,下载jacocoagent.jar包
maven:https://mvnrepository.com/artifact/org.jacoco/org.jacoco.agent
jar包:
http://central.maven.org/maven2/org/jacoco/org.jacoco.agent/0.7.7.201606060606/org.jacoco.agent-0.7.7.201606060606.jar
该包不需要放在代码里,放在机器某个位置就行
2,下载org.jacoco.core.jar包,并放到代码里
如果是maven:
https://mvnrepository.com/artifact/org.jacoco/org.jacoco.core
<!-- https://mvnrepository.com/artifact/org.jacoco/org.jacoco.core -->
<dependency>
<groupId>org.jacoco</groupId>
<artifactId>org.jacoco.core</artifactId>
<version>0.7.7.201606060606</version>
</dependency>
jar包下载:
http://central.maven.org/maven2/org/jacoco/org.jacoco.core/0.7.7.201606060606/org.jacoco.core-0.7.7.201606060606.jar
该包用于操作覆盖率数据
二、使用
1、运行程序
运行程序时,jvm options加上
-javaagent:/data/services/tomcat_base/testcov.bam.yy.com/lib/jacocoagent.jar=output=tcpserver,address=127.0.0.1,port=6300
其中地址address为当前机器的Ip,port为操作覆盖率数据的端口,可自行定义,默认为6300
至于如果加jvm options请自行google
官方api
http://www.eclemma.org/jacoco/trunk/doc/api/
2、java操作覆盖率数据
清空覆盖率数据
ExecDumpClient client = new ExecDumpClient();
client.setReset(true);
client.setDump(false);
//目标机器的ip和端口,对应着运行程序时javaagent参数里的ip和端口
client.dump(ip, port);
输出覆盖率文件jacoco.exec
ExecDumpClient client = new ExecDumpClient();
client.setDump(true);
ExecFileLoader file = client.dump("183.60.218.133", 6999);
file.save(new File("d:jacoco.exec"), false);