使用jacoco统计tomcat服务的测试代码覆盖率

Life is short , play more!
本文来自lihao's Blog,转载请注明。

这里我们采用on the fly 的方式。 除非特殊情况例如一些技术原因环境问题无法配置javaagent或者像android这样的java代码会转成其他dalvik vm 字节码,则只能使用offline的方式。

offline 的内容请阅读 http://eclemma.org/jacoco/trunk/doc/offline.html 

1. 下载 jacoco 0.7.4 版本 (注意,最新的0.7.5 版本不兼容最新的eclemma eclipse plugin)
一些jacoco 插件或者工具(例如eclemma eclipse plugin [可以用于生成code coverage 报告])对最新的0.7.5 不支持。
下载地址 http://eclemma.org/jacoco/index.html

2. 解压后,我们执行jvm的时候,加上对应的参数javaagent参数,即开启了on-the-fly instrument 方式,在执行程序的时候记录执行的代码覆盖数据。

3. 针对于tomcat,我们只需要修改${tomcat.home}/bin/catalina.sh 中的

改为

在 “\”$_RUNJAVA\” “\”$LOGGING_CONFIG\”” 中间加上

这样我们可以确保把-javaagent 的参数放在java命令 的第一个参数。

具体jacoco javaagent的用法,见 http://eclemma.org/jacoco/trunk/doc/agent.html

这里我们仅仅是指定了jacoco.exec 这个生成代码覆盖率记录文件的位置。

4. 我们重新启动tomcat

${tomcat.home}/bin/startup.sh

启动后,我们查看ps –ef|grep tomcat

/usr/bin/java -javaagent:/home/tomcat/lihao/jacoco/lib/jacocoagent.jar=destfile=/tmp/jacoco.exec -Djava.util.logging.config.file=/opt/app/tomcat /conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -server -Xms512M -Xmx512M -XX:PermSize=512m -XX:MaxPermSize=512m -Djava.endorsed.dirs=/opt/app/tomcat-api-amque/endorsed -classpath /opt/app/tomcat /bin/bootstrap.jar:/opt/app/tomcat-api-amque/bin/tomcat-juli.jar -Dcatalina.base=/opt/app/tomcat -Dcatalina.home=/opt/app/tomcat -Djava.io.tmpdir=/opt/app/tomcat /temp org.apache.catalina.startup.Bootstrap start

如果看到 –javaagent的参数加入成功后,那么我们就可以看到 file /tmp/jacoco.exec 这个文件已经存在了。 这个文件就是执行程序时记录的代码覆盖记录。

5. Jacoco.exec 覆盖记录有了后,我们可以借助eclemma for eclipse plugin 来生成覆盖率报告。

1) 安装eclemma

install



2) 安装后打开 windows->show views->coverage
3) 右键,import session
4) 选择jacoco.exe

choose

5) Next ,选择要分析的src
6) 生成报告

cc1

cc2

此篇文章已被阅读4345 次


发表评论

电子邮件地址不会被公开。 必填项已用*标注