如何在 Android 中获取仪器测试的代码覆盖率

Kam*_*ari 10 android android-studio

在 Android Studio 中,我没有找到在 androidTest 文件夹下编写的仪器测试的“使用代码覆盖率运行”选项。但是我可以看到它是在测试文件夹中编写的 JUnit 测试用例。

谁能告诉我如何获得该保险?

提前致谢。

小智 -2

所以根据你的评论,我假设你在你的 gradle 中成功设置了 jacoco。现在请在您的应用程序 gradle 中更改或添加以下材料

coveralls {
    jacocoReportPath = "${buildDir}/reports/coverage/debug/report.xml"
}
Run Code Online (Sandbox Code Playgroud)

上面的代码使您的覆盖率报告位于app/build/report/..并且您将获得两个文件夹,包括其他文件夹。AndroidTest 和测试文件夹。在AndroidTest文件夹中,您将获得覆盖率文件夹并浏览index.html,您将获得仪器测试结果的覆盖率报告。与测试文件夹相同,探索它并浏览index.html

现在是主要部分。您必须在pp gradle中编写以下代码

task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest','connectedAndroidTest']) {

    reports {
        xml.enabled = true
        html.enabled = true
    }

    // The lines below make sure we can report against Kotlin and exclude some Android Stuff
    def fileFilter = [
            '**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*',
            '**/*Test*.*', 'android/**/*.*'
    ]
    def debugTree = fileTree(dir: "$project.buildDir/intermediates/javac/debug/compileDebugJavaWithJavac/classes/", excludes: fileFilter)
    def mainSrc = "$project.projectDir/src/main/java"

    sourceDirectories = files([mainSrc])
    classDirectories = files([debugTree])
    executionData = fileTree(dir: project.buildDir, includes: [
            'jacoco/testDebugUnitTest.exec', 'outputs/code-coverage/connected/*coverage.ec'
    ])
}
Run Code Online (Sandbox Code Playgroud)

成功同步后,您将在任务 jacocoTestRepor旁边看到一个播放按钮...点击它并选择第一个,例如 Run yourProject [jacoco]

  • 答案是不完整的。Android Gradle 插件没有“coveralls”扩展。它是第三方插件的扩展。所以你必须应用该插件才能使用它。 (4认同)