java代码覆盖_jacoco轻松完成java代码覆盖率的⽅法,很可能
也是你想要的!
近期因⼯作需要,需要统计⼀个javaweb项⽬的代码覆盖率,虽然整体来说jacoco⽤起来很简单,但是到具体的项⽬时,还是各有不同,因此把⼀次实践的经验总结下来,希望能对学习jacoco的同学有所帮助。
⾸先需要统计的是⼀个javaweb项⽬,通过maven打包成war包,然后⾥⾯有⼀些⼦项⽬,打包程jar包,需要要统计这jar包的覆盖率。
⾄于⼯具,⽹上⼤多介绍的是jacoco+ant,开始也尝试了⼀下,但是有个问题是,ant通过execl⽂件⽣成report的时候,需要制定源码路径和class路径。
由于上⾯提到统计jar包的覆盖率,所以class⽂件解压出来可以得到,源⽂件从svn拉出来也可以拿到,但是有个问题时由于是maven的⼦项⽬,路径都是独⽴的,l写起来⽐较⿇烦,看了⽹上有⼈说需要在structure下⾯建⽴多个group,对应的源⽂件和类⽂件也要新增进去,⽽且每次更新代码,我们都需要重新上传,太⿇烦了。所以呢,我最后采⽤的是jacoco+eclemma,感兴趣的同学请往下看。
额外提⼀句,本⽂的⽬标是:通过jacoco统计出jar包中的代码覆盖率,并⽣成html报告。
【第⼀步】
将jacoco-0.7.9.zip拷贝到⽬标tomcat所在的机器上,并解压,⽐如解压后放在/home/ jacoco-0.7.9下⾯,⽬录如下:
【第⼆步】
停掉tomcat,在 /bin/catalina.sh 中添加jacoco插件,修改JAVA_OPTS的值,如下:
其实主要是添加
这⼀段参数,将⾥⾯的jacocoagent.jar的路径换成上⾯解压的路径,include是为了筛选要收集覆盖率的类,后⾯的output那⼀段是覆盖率⽂件的输出,改成所在服务器的ip,端⼝写⼀个没⽤到的都⾏,但要记住,后⾯会⽤到。
【第三步】
完成第⼀⼆步骤之后,就可以将tomcat启动了,启动之后,执⾏⼀下ps -ef |grep jacocoagent 命令,结果如下:
到此,配置已经ok了。接下来就是执⾏⽤例。
【第四步】
执⾏完⼀些⽤例之后,现在需要通过eclipse来收集覆盖率信息了,⾸先将eclipse安装eclemma插件,安装⽅法这⾥就不详细说了,可以问度娘。笔者装的是eclemma-2.3.3,安装好之后,打开eclipse,按下⾯的路径打开。
然后在⾥⾯输⼊coverage ,如果看到下⾯这个,表⽰安装已成功。
【第五步】
我们说过不⽤ant的原因是由于源码和class⽂件的路径写l不好写,那么我们⽤eclipse怎么做呢?
⾸先,从svn将源码down下来,是maven项⽬,然后通过eclipse导⼊,这样我们就有源码了。
然⽽还需要class⽂件,这个也很简单,最⽅便的是直接从pkg取到集成好的jar,或者也可以直接通过上⾯的maven项⽬⽣成jar,都可以。
问题来了,svn上down下来的⼯程只有源码,没有jar包,怎么办呢?怎么把项目导入到eclipse
接下来本⽂的做法就是,新建⼀个java⼯程,然后将上⾯得到jar包都导⼊,接着,将源码关联到jar包上。到此,需要的源码有了,class也妥了,接下来就该eclemma上场了。
【第六步】
⾸先打开上⾯的java- coverage的view,如下:
然后在这个view⾥⾯右键,导⼊,选择coverage session,接着选择agent address,回到output配置,输⼊tomcat所在的ip,还有之前敲的端⼝,然后next。
接着,勾选include binary library,然后选择刚才建的⼯程,以及⾥⾯的jar包,如下:
然后finish,接着等⼀等,等导⼊完成,界⾯就出现覆盖率信息了,可以多次导⼊,⽀持合并覆盖率,以及查看详细的代码覆盖率,还可以右键导出html格式的报告。
到此,已经完成了开篇提的⽬标了。
恒⽣技术之眼原创⽂章,未经授权禁⽌转载。详情见(点击)转载须知。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论