[英]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)
問題是Sonar
和Jacoco
沒有考慮用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.