CoD*_*oDe 17 android code-coverage jacoco sonarqube sonarqube-ops
我正在尝试使用Jacoco为Kotlin做声纳设置以生成代码覆盖率报告,但它没有显示任何代码覆盖率.在检查Sonar控制台时,它显示以下错误.任何人之前都遇到过这个问题,任何建议可能会错过.
元信息
插件使用sonarqube版本"2.6.1"
gradleVersion ='3.0.1'
kotlinVersion ='1.2.21'
Sonarqube版本=版本6.7.1(版本35068) - LGPL v3
令人沮丧的是,我的设置项目生成空白代码覆盖率报告:(.PFA.
编辑:请找到项目结构快照.
我正在添加声纳和Jacoco gradle文件设置我正用于生成声纳矩阵报告.
这是sonar.gradle文件:
sonarqube {
properties {
property "sonar.projectKey", "jacoco.sonar.test"
property "sonar.projectName", "Sonar Jacoco Test"
property "sonar.projectVersion", "1.1"
property "sonar.java.source", "7"
property "sonar.android.lint.report", "build/outputs/lint-results.xml"
property "sonar.java.binaries", "build/tmp/kotlin-classes"
property "sonar.java.test.binaries", "build/intermediates/classes/test/,build/tmp/kotlin-classes/devDebugUnitTest"
property "sonar.tests","src/test/java"
property "sonar.sources","src/main/java"
property "sonar.java.coveragePlugin", "jacoco"
property "sonar.jacoco.reportPaths","build/jacoco/testDevDebugUnitTest.exec"
property "sonar.junit.reportsPath","build/test-results/testDevDebugUnitTest"
}
}
Run Code Online (Sandbox Code Playgroud)
这里是jacoco.gradle文件
apply plugin: 'jacoco'
jacoco {
toolVersion = "0.7.9"
reportsDir = file("${project.projectDir}/app/build/reports")
}
task jacocoTestReport(type: JacocoReport, dependsOn: "app:testDevDebugUnitTest") {
group = "Reporting"
reports {
xml.enabled = true
html.enabled = true
}
def fileFilter = ['**/R.class',
'**/R$*.class',
'**/BuildConfig.*',
'**/*$ViewInjector*.*',
'**/*$ViewBinder*.*',
'**/*$MembersInjector*.*',
'**/Manifest*.*',
'**/*Test*.*',
'android/**/*.*']
classDirectories = fileTree(
dir: "${project.projectDir}/app/build/intermediates/classes/dev",
excludes: fileFilter
) + fileTree(
dir: "${project.projectDir}/app/build/tmp/kotlin-classes/devDebug",
excludes: fileFilter
)
// sources
sourceDirectories = files(["${project.projectDir}/app/src/main/java"])
executionData = files("${project.projectDir}/app/build/jacoco/testDevDebugUnitTest.exec")
}
Run Code Online (Sandbox Code Playgroud)
我用gradle命令生成Jacobo报告,然后报告.
./gradlew clean jacocoTestReport sonarqube
Run Code Online (Sandbox Code Playgroud)
我观察到我正在接受,必须发布一些路径.
未收集覆盖范围信息.也许您忘记将调试信息包含在已编译的类中?
对不起,如果这看起来有点长; 但这是我发现在一个地方总结的最好的.请注意我尝试使用Java类进行类似的设置,而不是使用kotlin来生成带代码覆盖率的报告.
如果您使用的是 android 测试协调器,这可能就是问题所在。
我今天遇到了同样的问题,禁用 Android 测试协调器后,覆盖范围再次正常工作。
错误报告:https ://issuetracker.google.com/issues/72758547
我不确定 Android Kotlin 构建是如何配置的,但在我的 Android Java 中,build.gradle我必须像这样注释掉测试编排器:
android {
...
testOptions {
// temporarily disable the orchestrator as this breaks coverage: https://issuetracker.google.com/issues/72758547
//execution 'ANDROID_TEST_ORCHESTRATOR'
...
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1460 次 |
| 最近记录: |