将 coverage.ec 文件上传到声纳安卓



我有一个 coverage.ec 文件,它被生成并显示了我的浓缩咖啡UI测试的代码覆盖率。我还在gradle中配置了声纳,如下所示:

sonarqube {
properties {
    property "sonar.projectName", "Android 9"
    property "sonar.projectKey", "org.sonarqube:Android9"
    property "sonar.host.url", "http://localhost:9000"
    property "sonar.username", "admin"
    property "sonar.password", "password"
    property "sonar.projectVersion", "5"
    property "sonar.java.source", "7"
    property "sonar.android.lint.report", "build/outputs/lint-results.xml"
    property "sonar.sourceEncoding","UTF-8"
    property "sonar.sources","src/main/java"
    property "sonar.exclusions","build/**,**/*.png"
    property "sonar.test.exclusions", ""
    property "sonar.binaries", "build/classes"
    property "sonar.jacoco.reportPath","build/jacoco/testDevDebugUnitTest.exec"
    property "sonar.tests", "src/androidTest/java"
    //property "sonar.import_unknown_files", true
    //property "sonar.android.lint.report", "./build/outputs/lint-results.xml"
    property "sonar.jacoco.itReportPath", "build/outputs/code-coverage/connected/flavors/NORMAL/*.ec"
}}

问题?声纳中根本没有显示任何代码覆盖率 - 什么都没有,0%,这真的很奇怪,在过去的一周里,我没有在网上找到任何东西,我花了在互联网上寻找。有人知道发生了什么吗?

您必须指定测试结果才能由声纳处理您的覆盖范围。另请注意,sonar.jacoco.itReportPath已过时。如今,所有覆盖文件都指定sonar.jacoco.reportPaths属性。

您也不必手动指定源目录。请参阅androidTest属性。

这是一个同时具有测试(如Robolectric(和Android测试(如Espresso(的项目的配置。

afterEvaluate {
    def flavor = "DEV"
    def variant = "devDebug"
    def testTaskName = "test${variant.capitalize()}UnitTest"
    // output both android and host test results to single directory
    def junitReportsPath = "build/outputs/androidTest-results/connected/flavors/$flavor/"
    project.tasks[testTaskName].reports.junitXml.destination = junitReportsPath
    sonarqube {
        // you don't have to specify these manually as android sonar plugin handles it
        // as soon as you specify androidVariant
        // property "sonar.sources","src/main/java"
        // property "sonar.tests", "src/androidTest/java"
        androidVariant variant
        properties {
            property "sonar.jacoco.reportPaths",
                    ["build/jacoco/${testTaskName}.exec",
                     "build/outputs/code-coverage/connected/flavors/$flavor/*.ec"]
            property "sonar.junit.reportsPath", junitReportsPath
            // other settings
            // ...
        }
    }
}

我想通了。我没有为我的 reportPath 使用 *.ec,而是将其更改为"coverage.ec"。然后它出现了。谢谢你们的帮助!

最新更新