jacoco-java測試覆蓋率工具

1 為什么要關注測試覆蓋率

? ? 覆蓋率是程序編程的最后一環,單元測試驗證代碼,而覆蓋率驗證測試用例。

? ?代碼覆蓋率常常被拿來作為衡量測試好壞的指標

? ?開發關注覆蓋率是為了更加深入的測試代碼,不留死角,避免隱藏bug的出現

? ?在對外說“代碼很牛,沒有bug”的時候,說服別人需要有數據


2 jacoco是什么

JaCoCo是一個開源的覆蓋率工具(官網地址: http://www.eclemma.org/JaCoCo/ ),

它針對的開發語言是java。

實現:使用asm動態修改字節碼,在代碼中進行打樁,從而進行統計。

模式:插件模式、命令行模式

使用:1 執行測試用例的時候使用jacoco參數,會生成覆蓋率分析文件。2 使用jacoco命令根據exec文件生成覆蓋率報告。

數據指標:

指令級覆蓋(Instructions,C0coverage)

分支(Branches,C1coverage)

圈復雜度(CyclomaticComplexity)

行覆蓋(Lines)

方法覆蓋(non-abstract methods)

類覆蓋(classes)


3? 怎樣分析測試覆蓋率

IDE方式、gradle、jenkins持續集成

IDE方式:IDEA內部實現了測試覆蓋率的插件,使用方便

在Run/Debug configuration界面中的Code Coverage tab頁中進行配置,在2、3處可以自定義分析類或者包。


使用gradle插件

在目前的項目使用的是gradle構建工具,項目中使用了java、jacoco插件,tasks中有jacoco默認的任務jacocoTestReport。運行該任務的前提是要執行test任務,即要執行測試用例。


jenkins插件方式

先執行測試用例,再執行sonar靜態分析,如果靜態分析不通過,則本次構建失敗;如果sonar通過,則jacoco分析.exec文件,得出覆蓋率。



覆蓋率文件(執行測試用例之后會生成)

class文件路徑

java源文件路徑(如果找不到,看不到具體的代碼覆蓋信息)

分析的java代碼路徑

排除的java文件

構建的指標(max、min)

構建失敗指標

4 檢測有意義的代碼

檢測的代碼:

服務實現類

工具類

線程相關類

不用檢測的代碼:

entity類

數據庫操作類

異常定義類

常量類

枚舉

VO等

生成的代碼


5 如何提升測試覆蓋率

多寫測試用例

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,973評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,462評論 25 708
  • 1.測試與軟件模型 軟件開發生命周期模型指的是軟件開發全過程、活動和任務的結構性框架。軟件項目的開發包括:需求、設...
    Mr希靈閱讀 21,987評論 7 278
  • 2017.2.10晨起感恩 累計35 感恩上師諸佛菩薩的護佑和加持 感恩歷代宗親的傳承 感恩老媽養育之恩,感恩老...
    鵲曾閱讀 240評論 0 0
  • 答應自己,不再 你現在做的事情 有一些人 一輩子都不能經歷 事無大小 用心把它做好 你現在認識的人 有一...
    WTPwhu閱讀 677評論 0 2