1、下載 jacoco
官網:https://www.jacoco.org/jacoco/index.html
2、拷貝 jar 包 (解壓即可)
3、啟動 jacocoagent,監控被測項目
java -javaagent:jacocoagent.jar=includes=*,output=tcpserver,port=6300,address=localhost,append=true -jar demo-0.0.1.jar
#demo-0.0.1.jar為被測項目jar包
4、cli 包 dump 生成 exec 文件(注意一定要測試完畢之后)
java -jar cli-0.8.7.jar dump --address 127.0.0.1 --port 6300 --destfile jacoco-demo.exec
# --address 127.0.0.1 --port 6300 指向jacocoagent啟動IP和端口
# jacoco-demo.exec 為生成exec文件名
5、cli 包 exec 生成 report 報表
java -jar cli-0.8.7.jar report jacoco-demo.exec --classfiles D:\code\devops\SBD\target\classes --sourcefiles D:\code\devops\SBD\src\main\java --html html-report --xml report.xml --encoding=utf-8
#--sourcefiles 和 --classfiles 為本地被測項目源碼和字節碼路徑
6、覆蓋率報告
點開 report 文件下 index.html
jacoco 覆蓋率,Cov 表示覆蓋率
表格列依次是:元素;未覆蓋字節碼行數;未覆蓋的分支數;圈復雜度;行;方法;類;
覆蓋率標識:
條件覆蓋:紅鑽:表示未覆蓋;黃鑽:表示部分覆蓋;綠鑽:表示全部覆蓋;
行覆蓋:全覆蓋(綠色),未覆蓋(紅色),半覆蓋(黃色),無視(白色)
測試代碼覆蓋率 Jacoco
https://blog.csdn.net/weixin_42517093/article/details/106339718
https://mp.weixin.qq.com/s/KRIzu7lnmPZrgHrRywYa-w
自己實踐
啟動監控項目命令時出現 zsh: no matches found
解決方法: https://blog.csdn.net/Cool_001/article/details/112719537
這篇我親測試可以的
總結:
java -javaagent:jacocoagent.jar=includes=*,output=tcpserver,port=6300,address=localhost,append=true -jar B_End_Test_Project-0.0.1-SNAPSHOT.jar
java -jar jacococli.jar dump --address 127.0.0.1 --port 6300 --destfile jacoco-demo.exec
# --address 127.0.0.1 --port 6300 指向jacocoagent啟動IP和端口
# jacoco-demo.exec 為生成exec文件名
java -jar jacococli.jar report jacoco-demo.exec --classfiles /Users/lucax/Desktop/工作/小工具腳本/B端測試平台/b_end_java_test_project/target/classes --sourcefiles /Users/lucax/Desktop/工作/小工具腳本/B端測試平台/b_end_java_test_project/src/main/java --html html-report --xml report.xml --encoding=utf-8
#--classfiles 和字節碼路徑 注意要指定到 。。。/target/classes 這個目錄
#--sourcefiles 為本地被測項目源碼 注意要指定到 。。。。/src/main/java 這個目錄
開發的時候可以不打包,在IDE 把啟動參數加上 ,其余的2個命令也是那么敲
-javaagent:jacocoagent.jar=includes=*,output=tcpserver,port=6300,address=localhost,append=true
每次跑完功能,就執行命令,更新 exec文件,更新報告,即后面的2條命令