簡體   English   中英

聲納 Jacoco 未在覆蓋范圍內考慮 Kotlin androidTest(集成測試用例)

[英]Sonar Jacoco not considering Kotlin androidTest (integration test case) in coverage

我為我的 android 項目編寫了本地和集成測試用例。 使用Kotlin (1.4.21) Robolectric (4.5.1), sonar (2.7.1), Jacoco (maven plugin 0.8.2)

問題是SonarJacoco沒有考慮用Kotlin編寫的androidTest (集成測試用例)進行代碼覆蓋但是聲納顯示其他測試用例的正確覆蓋率,例如 -

java 單元測試用例 -> 工作

koltin 單元測試用例 -> 工作

java集成測試用例->工作

kotlin 集成測試用例 ->不工作

雖然我檢查了我為聲納設置的路徑,但一切都是正確的。

properties['sonar.java.binaries'] = files("${buildDir}/intermediates/javac/universalDebug/classes")
properties["sonar.java.binaries"] += files("${buildDir}/tmp/kotlin-classes/universalDebug/")

properties['sonar.java.test.binaries'] = files("${buildDir}/intermediates/javac/universalDebugAndroidTest/classes")
properties['sonar.java.test.binaries'] += files("${buildDir}/tmp/kotlin-classes/universalDebugAndroidTest/")

我已經完成了其他 stackoverflow 問題,但沒有發現同樣的問題。 所以,我無法找出聲納沒有顯示我用 Kotlin 編寫的集成測試用例的覆蓋率的問題。

提前致謝

您可能需要執行以下操作

tasks.withType(Test) {
    jacoco.includeNoLocationClasses = true
}

請注意,Java 11 的一些問題可能會導致您的測試失敗,因此您可能還想排除jdk.internal ,如下所示

tasks.withType(Test) {
    jacoco.includeNoLocationClasses = true
    excludes = ['jdk.internal.*']
}

或者有點冗長的選項,但有效:

subprojects {
    pluginManager.withPlugin("com.android.library"){
        android.testOptions.unitTests.all {
            jacoco {
                includeNoLocationClasses = true
                excludes = ['jdk.internal.*']
            }
        }
    }
    pluginManager.withPlugin("com.android.application"){
        android.testOptions.unitTests.all {
            jacoco {
                includeNoLocationClasses = true
                excludes = ['jdk.internal.*']
            }
        }
    }
    apply plugin: 'jacoco'
}

如果可能的話,我建議你也升級你的 jacoco 和 sonar 插件版本

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM