1. 程式人生 > >Jacoco覆蓋率工具使用

Jacoco覆蓋率工具使用

blank 類型 9.1 位置 get gin count 結束 用例

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覆蓋率工具使用