Jacoco
什么是Jacoco?
Jacoco是一个开源的Java代码覆盖率工具,Jacoco可以嵌入到Ant 、Maven中,并提供了EclEmma Eclipse插件,也可以使用JavaAgent技术监控Java程序。很多第三方的工具提供了对Jacoco的集成,如sonar、Jenkins等。
软件安装
Ant
Jacoco 在官网上下载Jacoco,官网地址:http://www.eclemma.org/jacoco/
![67081d27019d91455d529a2259ee2a20.png](https://img-blog.csdnimg.cn/img_convert/67081d27019d91455d529a2259ee2a20.png)
1. 在部署的tomcat服务中,/bin/catalina.sh中JAVA_OPTS参数值添加。
file:
-javaagent:/app/jacoco/jacocoagent.jar=destfile=/tmp/jacoco.exec,append=true,includes=*,output=file"
tcpserver:
-javaagent:/app/jacoco/jacocoagent.jar=includes=*,output=tcpserver,port=1111,,append=false,address=10.100.139.91
其中:/app/jacoco/jacocoagent.jar为安装jacoco的jacocoagent.jar包绝对路径;output覆盖率数据输出的形式,有file, tcpserver, tcpclient, 默认是file,file是在jvm停掉时才将覆盖率数据dump出来;address和port可以提供client访问,并dump出覆盖率数据文件, 在build.xml会使用。
如果用file的方式获得覆盖率的话,需要shutdown tomcat,执行./shutdown.sh ,如果不行的话,执行kill但是千万不能执行kill -9。执行完kill后,会把覆盖率dump到jacoco.exec
2. 启动tomcat服务,sh /bin/startup.sh
3. 编写build.xml
如果你的web工程里面还引入了别的工程,例如你现在tomcat所部署的war包只是web的入口,实际的逻辑,模型等都作为jar包放在这个工程的lib里面的时候,此时你又要统计这些逻辑模型的代码覆盖率,那么你需要做的是:1、把lib中你需要统计覆盖率的jar包解压出来;2、把jar包对应的源代码上传上去;3、build.xml中structure下面建立多个group,对应的源文件和类文件也要新增进去;
4. 在build.xml所在的目录执行下面命令t将会把报告输出到相应的目录下面
/app/export/servers/apache-ant-1.9.7/bin/ant dump
/app/export/servers/apache-ant-1.9.7/bin/ant report