Android 單元測試實戰(3)—— 基於Cobertra&sonarqube的單元測試覆蓋率統計

Jacoco

在聊到單元測試覆蓋率的時候,基本上都會使用jacoco做覆蓋率檢測,但通過集成發現與Powermock有兼容性問題。

對於Powermock上使用@PrepareForTest的類,都無法檢測覆蓋率。導致覆蓋率幾乎爲0。

Powermock的開發者也表明是由於底層實現邏輯上,與jacoco衝突導致的。計劃未來去解決該問題。

jacoco提供了一種靜態的代碼覆蓋率檢測,但搞了很久,使用gradle一直沒有跑通,最後放棄。

Cobertra

該工具也是一個覆蓋率檢測工具。有開發者提供了Gradle的支持。

https://github.com/stevesaliman/gradle-cobertura-plugin

對於老版本的gradle,無需做任何改變,按照流程集成就好了。

新版本由於class的存放路徑發生了變化,所以需要修改一下。最終我的gradle修改如下:

ext {
    target = "${project.buildDir.path}/intermediates/javac/360-sydDebug/compile360-sydDebugJavaWithJavac/classes"
}
apply plugin: 'net.saliman.cobertura'
cobertura {
    androidVariant = "360-sydDebug"
    coverageFormats = ["xml"]
    auxiliaryClasspath = files(target)
    coverageIncludes = [".*com.xxxx.*"]
}

集成之後,只需要運行./gradlew app:cobertra即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章