Jacoco覆蓋率工具使用
Jacoco介紹
Jacoco是一個開源的覆蓋率工具。Jacoco可以嵌入到Ant 、Maven中,並提供了EclEmma Eclipse插件,也可以使用JavaAgent技術監控Java程序。很多第三方的工具提供了對Jacoco的集成,如sonar、Jenkins等。
官網地址:http://www.eclemma.org/jacoco/
Java Counters
Jacoco包含了多種尺度的覆蓋率計數器,包含指令級(Instructions,C0coverage),分支(Branches,C1coverage)、圈復雜度(CyclomaticComplexity)、行(Lines)、方法(non-abstract methods)、類(classes)。
如上圖所示,標示綠色的為分支覆蓋充分,標黃色的為部分分支覆蓋,標紅色的為未執行該分支。
支持的集成工具
Jacoco團隊提供了如下的一些集成工具的支持:
Java API
http://www.eclemma.org/jacoco/trunk/doc/api/index.html
Command Line
http://www.eclemma.org/jacoco/trunk/doc/agent.html
Apache Ant
http://www.eclemma.org/jacoco/trunk/doc/ant.html
Apache Maven
http://www.eclemma.org/jacoco/trunk/doc/maven.html
Eclipse EclDmma Plugin
http://www.eclemma.org/
下面介紹使用ant工具的方法,將使用一個web工程做完示例講解。
Apache Ant的使用
web工程圖
執行ant file task:all-report
執行ant file後生成報告report目錄如圖所示:
測試報告
可以單獨運行命令:anttest-report生成測試報告;
執行之後會在build/report/html生成測試報告,其中打開index.html如下所示。下
單擊: 進入:
展示測試類名稱、測試方法名稱 、測試狀態 success or fail 、類型及執行時間:
測試用例覆蓋率
可以單獨執行命令:antcoverreport;
執行之後會在build/report/coverage下生成覆蓋報告,其中打開index.html如下所示:
單擊包名稱一層一層單擊進入:
具體顏色定義查看上面的介紹。
Jacoco與jenkins,sonar集成
Jenkins中構建簡單配置
圖僅供參考。
Jacoco與jenkins集成
首先jenkins安裝jacoco插件,如圖所示:
建議使用jenkins插件管理進行安裝;
對應的Jenkins插件見https://wiki.jenkins-ci.org/display/JENKINS/JaCoCo+Plugin
配置jacoco插件
在“Addpost-build action”中選擇“”,如圖所示:
配置如下部分:
第一個部分:代碼覆蓋率統計文件位置;
第二個部分:classes文件位置;
第三個部分:源碼文件位置;
根據需要填寫百分比;
Jacoco 與sonar集成
在項目跟目錄下面新建一個sonar-project.properties,如web圖所示。
編輯此文件:
執行sonar,配置jenkins部分
只需要執行sonar-runner即可,前提是將jenkins與sonar-runner集成在一起;
運行jenkins,執行構建任務
看到類似結果,表示構建結束。
至此,可以通過jenkins查看代碼覆蓋率等信息。
單擊進入測試項目:
單擊“CodeCoverage Trend“部分,進入詳細頁面:
單擊進入詳細的覆蓋率文件:
SonarQube展示
進入sonarqube項目:http://172.16.XXX.XXX9000/
單擊工程jacoco_test_project:
進入詳細頁面:
其中圈中左邊為單元測試覆蓋率,右邊為單元測試統計;
單擊進入
通過下拉框選擇查看行覆蓋情況,未覆蓋行情況,分支覆蓋情況,未覆蓋分支情況;
單擊 進入測試情況信息頁面:
如果存在錯誤,此部分會展示錯誤情況。
Jacoco覆蓋率工具使用