生成Jacoco报告时排除Android Instrumentation测试。

6
我在Android应用程序中有多个模块。我需要在CI/CD流水线中自动化代码覆盖率报告,但它没有物理/虚拟Android设备,也不可能连接设备。
从以下网址集成Jacoco - https://github.com/gouline/android-samples/blob/master/jacoco/jacoco.gradle 当我尝试通过gradle命令生成覆盖率报告时,发生了什么情况?
>> ./gradlew createDebugCoverageReport

它会显示以下错误日志:

* What went wrong:
Execution failed for task ':app:connectedDebugAndroidTest'.
> com.android.builder.testing.api.DeviceException: No connected devices!

我试图通过命令排除 Gradle 任务(connectedDebugAndroidTest)。

>> ./gradlew createDebugCoverageReport -x app:connectedDebugAndroidTest -x module1:connectedDebugAndroidTest

出现以下错误 -

> Task :module1:createDebugAndroidTestCoverageReport FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':vpn:createDebugAndroidTestCoverageReport'.
> java.io.IOException: No coverage data to process in directories [/Users/abc/ws/prjName/module1/build/outputs/code_coverage/debugAndroidTest/connected]

我在module1中有仪器化测试

当设备未连接时,如何在生成Jacoco报告时排除仪器化测试。

更新:

我能够通过以下方式单独为每个模块生成Jacoco报告:

./gradlew testDebugUnitTestCoverage

我正在寻找一个综合报告。如何将来自不同模块的多个 Jacoco 报告集成到一个报告中?


你对这个问题有没有找到解决方案? - VVB
不,生成单独的模块报告。 - Vamsi
1个回答

0
请从jacocoTestReport任务中移除createDebugCoverageReport。
task jacocoTestReport(type: JacocoReport,
        dependsOn: ['testDebugUnitTest']) {
    group = "Reporting"
    description = "Generate Jacoco coverage reports after running tests."

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

    def fileFilter = ['androidx/**/*.*',
                      '**/view/*.*',
                      '**/data/*.*',
                      '**/data/model/*.*',
                      '**/generated/callback/*.*',
                      '**/lambda$*.class',
                      '**/lambda.class',
                      '**/*lambda.class',
                      '**/*lambda*.class']

    def debugTree = fileTree(dir:
            "${buildDir}/intermediates/javac/debug/classes",
            excludes: fileFilter
    )

    def mainSrc = "/src/main/java"

    sourceDirectories.from = files([mainSrc])

    classDirectories.from = files([debugTree])
    executionData.from = fileTree(dir: "${buildDir}", includes:[
            "/jacoco/testDebugUnitTest.exec"])
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接