最近打算学一下jacoco,弄一下项目的测试覆盖率。
项目用的是sprint boot,并不是tomcat。所以打算用javaagent参数来弄
启动参数是这样的
java -jar md5.jar -javaagent:jacoco.jar:dumponexit=true,destfie=jacoco.exec
然后启动不成功。提示反射错误。
然后认真研究了一下jacoco的文档。因为项目用到了spring的东西,spring本身就是通过反射实现IoC的。打桩也是一种反射执行
所以除了自己的代码,其他的代码才需要打桩,于是我加了一下参数
java -jar md5.jar -javaagent:jacoco.jar:dumponexit=true,destfie=jacoco.exec,includeclass=com.ws.*
果然,这下可以启动成功了。但是当我退出进程的时候,就是没生成jacoco.exec
这下蛋疼了,想爆了头。后来灵机一动,会不会跟顺序有关
于是我百度了一下javaagent的用法。果然,javaagent必须在最前边,否则不生效。
好吧。最后来一发:
java -javaagent:jacoco.jar:dumponexit=true,destfie=jacoco.exec,includeclass=com.ws.* -jar md5.jar
这回总算可以了。但是生成的exec文件,如果单独要解释,又是一番百度,不过这些就比较简单了。后来顺利成功输出覆盖率文件。