jacoco集成gradle
jacoco作為代碼覆蓋率統計的工具,目前社區依舊很活躍,也在持續更新,支持的測試方式也相對豐富(支持獨立測試工程和項目集成的測試模塊),如果項目想做代碼覆蓋率統計,還是首推jacoco。
jacoco集成mvn的實現,網上介紹已經比較多了,這里不再贅述,只記錄一下jacoco集成gradle的過程,此處以項目集成的測試模塊做例。
1.在測試模塊的build.gradle中引入jacoco插件。
apply plugin: "jacoco"
2.指定jacoco的版本和報告路徑,這里只有兩個屬性,toolVersion指定版本號,reportsDir指定報告生成的路徑也就是 .exec文件的路徑,路徑為空時,默認 $buildDir/reports/jacoco
jacoco { toolVersion = "0.7.9" reportsDir = file("$buildDir/customJacocoReportDir") }
3.同樣在測試模塊的build.gradle文件中,test任務下,增加jacoco的任務,這樣在每次執行測試腳本后會自動執行jacoco,我這邊是與testng配套的,因此與useTestng()順序放一起就行了.
特別關注,由於gradle在執行測試時對failcase是敏感的,只要存在一個case失敗,都會使本次構建失敗(直接拋出exception),導致在測試后無法執行jacoco,因此,需要跳過失敗case,增加屬性:
ignoreFailures = true
test { ignoreFailures = true useTestNG(); jacoco{ append = false destinationFile = file("$buildDir/jacoco/trade.exec") } }
4.在jenkis上做持續集成的話,基本上以上三點配置好之后就可以了,但如果本地想驗證看下覆蓋率報告的話,可以指定生成覆蓋率報告格式,新增jacoco報告任務
jacocoTestReport { reports { xml.enabled false csv.enabled false html.destination file("${buildDir}/jacocoHtml") } }
jacoco在jenkins上的配置
1.在jenkins系統管理-插件管理中,安裝jacoco插件,安裝好之后,增加的構建后任務中會出現生成jacoco測試報告的選項
2.增加任務后,出現覆蓋率配置,這里的配置需要特別注意,如果配錯無法找到對應文件時,執行的日志不會報錯,但會導致覆蓋率報告結果為0
Path to exec files:代碼覆蓋率統計文件位置,即.exec生成的文件路徑
Path to class directories:classes文件位置,統計的源代碼編譯后的路徑
Path to source directories :源碼文件位置,統計的源代碼路徑
下面是設置覆蓋率百分比的提醒閾值。
太陽表示覆蓋率高於設置閾值,覆蓋率報告里會橙色提醒
烏雲表示覆蓋率低於設置閾值,覆蓋率報告里會橙色提醒
3.配置完成執行構建,完成后即可看到覆蓋率報告的結果