JaCoCo下载安装
官网:https://www.jacoco.org/jacoco/
我选的下载版本是:jacoco-0.8.9
解压后主要用到两个jar包:jacocoagent.jar、jacocoacli.jar
下载springboot示例代码到本地
git平台:git clone https://github.com/zhangjy91/jacoco_demo.git
项目目录如下:
在项目根目录下执行mvn clean package命令对项目进行打包生成jar文件
启动JaCoCo agent进行插桩
java -javaagent:/Users/zhangjiangying/Downloads/jacoco-0.8.9/lib/jacocoagent.jar=includes=*,output=tcpserver,port=6300,address=localhost,append=true -jar demo-0.0.1-SNAPSHOT.jar
说明:
demo-0.0.1-SNAPSHOT.jar:就是刚才执行命令生成的jar包
打开浏览器,访问http://127.0.0.1:8080/hello,也就意味着覆盖了项目中的say()方法
通过cli的dump生成exec文件
java -jar /Users/zhangjiangying/Downloads/jacoco-0.8.9/lib/jacococli.jar dump --address localhost --port 6300 --destfile ./jacoco_tcp_01.exec
通过cli的exec生成report文件
java -jar /Users/zhangjiangying/Downloads/jacoco-0.8.9/lib/jacococli.jar report /Users/zhangjiangying/Downloads/jacoco-0.8.9/lib/jacoco_tcp_01.exec --classfiles /Users/zhangjiangying/Downloads/jacoco-0.8.9/lib/jacoco_demo/target/classes --sourcefiles /Users/zhangjiangying/Downloads/jacoco-0.8.9/lib/jacoco_demo/src/main/java --html report01
查看代码覆盖率
打开目录report01下的index.html,代码覆盖率是86%
再继续点击代码路径,发现say()方法已被访问,byebye()方法未访问
继续在浏览器上访问http://127.0.0.1:8080/byebye,以达到覆盖byebye()方法的目的
再次通过cli的dump生成exec文件
java -jar /Users/zhangjiangying/Downloads/jacoco-0.8.9/lib/jacococli.jar dump --address localhost --port 6300 --destfile ./jacoco_tcp_02.exec
通过cli的exec生成report文件
java -jar /Users/zhangjiangying/Downloads/jacoco-0.8.9/lib/jacococli.jar report /Users/zhangjiangying/Downloads/jacoco-0.8.9/lib/jacoco_tcp_02.exec --classfiles /Users/zhangjiangying/Downloads/jacoco-0.8.9/lib/jacoco_demo/target/classes --sourcefiles /Users/zhangjiangying/Downloads/jacoco-0.8.9/lib/jacoco_demo/src/main/java --html report02
查看代码覆盖率
打开目录report02下的index.html,代码覆盖率是100%
两个方法均被覆盖