Jacoco+Ant

一、概述

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 ...

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容