一、概述
Jacoco是一個(gè)開(kāi)源覆蓋率工具,支持分支覆蓋,基于JAVA,可嵌入到Ant、Maven,引入了Agent模式,可以使用其JavaAgent技術(shù)監(jiān)控Java程序等;
參考文檔:https://blog.csdn.net/qq_26392615/article/details/82228972
參考文檔:https://www.aliyun.com/jiaocheng/839260.html
二、環(huán)境準(zhǔn)備
1.Jacoco 安裝(官網(wǎng)下載,unzip jacoco-0.8.2.zip)
2.Ant 安裝 (官網(wǎng)下載,unzip?apache-ant-1.10.5-bin)
3.JDK安裝(已安裝1.8)
4.配置環(huán)境變量 vim ~/.bash_profile并source;
5.export ANT_HOME=/usr/local/src/apache-ant-1.10.5
6.PATH=$PATH:$ANT_HOME/bin
三、上傳源碼并啟動(dòng)項(xiàng)目服務(wù)
1.上傳源碼到服務(wù)器(10.1.132.187)
將本地classroom-api 項(xiàng)目的源碼以及編譯后的.class文件和項(xiàng)目的jar包上傳到服務(wù)器;
scp -r? /Users/susan/classroom-api root@10.1.132.187:/home/jacocodata/jacocoSrc
scp?classroom-api.jar root@10.1.132.187:/data0/webroot/classroom-api/
2.啟動(dòng)服務(wù)
檢查端口占用情況: netstat -tunlp | grep 8091
nohup java -javaagent:/opt/jacoco/lib/jacocoagent.jar=includes=com.dadaabc.classroom.api.*,output=tcpserver,port=8091,address=127.0.0.1?-jar /data0/webroot/classroom-api/classroom-api.jar > /data0/logs/classroom-api/20181210.log? 2>&1? &
四、編輯jacocoant.xml
jacocoant.xml?展開(kāi)源碼
五、調(diào)用接口并生成報(bào)告
測(cè)試用例執(zhí)行完畢后,執(zhí)行 ant -f jacocoant.xml??命令生成報(bào)告,執(zhí)行完畢后出現(xiàn)BUILD SUCCESSFUL 即執(zhí)行成功;報(bào)告在jacocoant.xml中所配置的路徑中{jacocoReportPath};
cd?{jacocoReportPath}
python -m SimpleHTTPServer 9999
即可在瀏覽器中通過(guò)訪(fǎng)問(wèn)10.1.132.187:9999在線(xiàn)查看報(bào)告結(jié)果;
六、報(bào)告解讀
注:一般綠色為充分覆蓋,紅色為未覆蓋,黃色為部分覆蓋,菱形指分支;
行覆蓋率:度量被測(cè)程序的每行代碼是否被執(zhí)行,判斷標(biāo)準(zhǔn)行中是否至少有一個(gè)指令被執(zhí)行。
類(lèi)覆蓋率:度量計(jì)算class類(lèi)文件是否被執(zhí)行。
分支覆蓋率:度量if和switch語(yǔ)句的分支覆蓋情況,計(jì)算一個(gè)方法里面的總分支數(shù),確定執(zhí)行和不執(zhí)行的 分支數(shù)量。
方法覆蓋率:度量被測(cè)程序的方法執(zhí)行情況,是否執(zhí)行取決于方法中是否有至少一個(gè)指令被執(zhí)行。
指令覆蓋:計(jì)數(shù)單元是單個(gè)java二進(jìn)制代碼指令,指令覆蓋率提供了代碼是否被執(zhí)行的信息,度量完全 獨(dú)立源碼格式。
圈復(fù)雜度:在(線(xiàn)性)組合中,計(jì)算在一個(gè)方法里面所有可能路徑的最小數(shù)目,缺失的復(fù)雜度同樣表示測(cè) 試案例沒(méi)有完全覆蓋到這個(gè)模塊。
七、采坑池
1.安裝ant后,執(zhí)行ant?version報(bào)類(lèi)似異常:Unable to locate tools.jar.Expected to find it in /usr/lib/jvm/java-6-openjdk/lib/tools.jar
找不到tools.jar,重裝jdk或者復(fù)制別的服務(wù)器上的tools.jar到異常提示下的Expected的路徑;
2.nohup java -javaagent ... 執(zhí)行后,Java項(xiàng)目服務(wù)啟動(dòng)報(bào)錯(cuò),讀取不到${ip.email.template}"
可能由于項(xiàng)目的環(huán)境變量DADA_ENV未讀取到,檢查服務(wù)器上環(huán)境變量是否配置,如已配置還報(bào)錯(cuò),嘗試執(zhí)行下面命令指定后啟動(dòng)成功;
export DADA_ENV=test && nohup java -javaagent ...