jacoco代碼覆蓋率報(bào)告分析

一、目的

對(duì)Jacoco代碼覆蓋率統(tǒng)計(jì)維度、報(bào)告字段說(shuō)明、報(bào)告詳細(xì)分析描述。并為精準(zhǔn)測(cè)試、健壯性測(cè)試提供指導(dǎo)。

二、Jacoco代碼覆蓋率統(tǒng)計(jì)維度

Jacoco是從代碼指令(Instructions, Coverage),分支(Branches, Coverage),圈復(fù)雜度(Cyclomatic Complexity),行(Lines),方法(Methods),類(Classes)等維度進(jìn)行分析的。

三、覆蓋率報(bào)告字段說(shuō)明

報(bào)告覆蓋率字段說(shuō)明

四、Jacoco覆蓋率報(bào)告詳細(xì)分析

4.1 目錄結(jié)構(gòu)

4.1.1一級(jí)目錄-group

代碼覆蓋率報(bào)告

手動(dòng)收集生成的報(bào)告,展示的時(shí)build.xml的 group name,若有多個(gè)group name則顯示多個(gè)。

組的覆蓋率取決于包的覆蓋情況。

注:報(bào)告的一級(jí)目錄展示以組為單位。

4.1.2 二級(jí)目錄-包名

展示當(dāng)前分組下面所有的包。

包的覆蓋率取決于類的覆蓋情況。

4.1.3 三級(jí)目錄-類名

展示當(dāng)前分組>包下面所有的類。

類的覆蓋率取決于方法的覆蓋情況。

4.1.4 四級(jí)目錄-方法名

展示當(dāng)前分組>包>類下面的所有方法。

方法的覆蓋率取決于方法內(nèi)代碼覆蓋的情況。

4.2 覆蓋率報(bào)告詳細(xì)分析

注:報(bào)告中涉及字段的名稱詳見(jiàn)3覆蓋率報(bào)告字段詳細(xì)說(shuō)明。

4.2.1 Missed Instructons

分組:紅色進(jìn)度條表未覆蓋,綠色進(jìn)度條表示已覆蓋,Cov 為總體覆蓋率。

Total:51379 表示沒(méi)有覆蓋的指令,64756 表示總的指令

Cov 表示覆蓋率。

Jacoco 計(jì)算的最小單位就是字節(jié)碼指令。指令覆蓋率表明了在所有的指令中,哪些被執(zhí)行過(guò)以及哪些沒(méi)有被執(zhí)行。這項(xiàng)指數(shù)完全獨(dú)立于源碼格式并且在任何情況下有效,不需要類文件的調(diào)試信息。

4.2.2 Missed Branches

分組:紅色進(jìn)度條表未覆蓋,綠色進(jìn)度條表示已覆蓋,Cov為總體覆蓋率。

Total:4307表示沒(méi)有覆蓋的分支,4954表示總的分支,Cov表示總體覆蓋率。

實(shí)例分析一

Missed Instructions覆蓋率100%,但分支覆蓋率為75%; 原因:所有代碼行都覆蓋并不代表所有分支都覆蓋完整。

分析:urls!=null這個(gè)條件已覆蓋,但urls=null這個(gè)條件還沒(méi)有覆蓋 ;所有的代碼行都有覆蓋到、但分支還沒(méi)有覆蓋完整、所以Instructions的覆蓋率100%、Braches的覆蓋率75%。

實(shí)例分析二

分析:if(StringUtils.hasText(strLike)) 只執(zhí)行了結(jié)果為flase的條件,沒(méi)有執(zhí)行結(jié)為true的條件,導(dǎo)致大括號(hào)的內(nèi)容沒(méi)有被執(zhí)行;所以Missed Instructions、Missed Braches覆蓋率都非100%。

4.2.3 Missed Cxty

此方法里面有1個(gè)for(1個(gè)for占2個(gè)條件)循環(huán)、8個(gè)if,圈復(fù)雜度共計(jì)10個(gè)。有兩個(gè)條件沒(méi)有被覆蓋所以Missed為2,Cxty為10(表示總數(shù))。

while, for, if,switch每個(gè)都是一個(gè)判定節(jié)點(diǎn)。嵌套的都是加1。

4.2.4Missed.Lines、Methods、classes

Classes表示類、Methods表示方法、Lines表示代碼行。

Missed表示未覆蓋數(shù)量,Classes表示共有X個(gè)類、Methods表示共有X個(gè)方法,Lines表示共有多少行代碼(例如:else是不統(tǒng)計(jì)到Lines的)。

4.3 覆蓋率標(biāo)識(shí)

4.3.1 條件覆蓋

紅鉆:表示未覆蓋

黃鉆:表示部分覆蓋

綠鉆:表示全部覆蓋

注:條件覆蓋都是用鉆表示。

4.3.2 Lines覆蓋

紅色背景:無(wú)覆蓋,該行的所有指令均無(wú)執(zhí)行。

背景:部分覆蓋,該行部分指令被執(zhí)行。

綠色背景:全覆蓋,該行所有指令被執(zhí)行。

最后編輯于
?著作權(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)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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