Vam*_*msi 6 android gradle jacoco android-instrumentation
我的 Android 应用程序中有多个模块。我需要在 CI/CD 管道中自动执行代码覆盖率报告,其中 \xe2\x80\x99t 没有物理/虚拟 Android 设备,并且无法附加设备。
\n集成 Jacoco 来自 - https://github.com/gouline/android-samples/blob/master/jacoco/jacoco.gradle
\n当我尝试通过 gradle 命令生成覆盖率报告时
\n>> ./gradlew createDebugCoverageReport\n
Run Code Online (Sandbox Code Playgroud)\n它失败并显示以下错误日志
\n* What went wrong:\nExecution failed for task \':app:connectedDebugAndroidTest\'.\n> com.android.builder.testing.api.DeviceException: No connected devices!\n
Run Code Online (Sandbox Code Playgroud)\n所以我尝试通过命令排除 gradle 任务 (connectdDebugAndroidTest)
\n>> ./gradlew createDebugCoverageReport -x app:connectedDebugAndroidTest -x module1:connectedDebugAndroidTest\n
Run Code Online (Sandbox Code Playgroud)\n出现如下错误 -
\n> Task :module1:createDebugAndroidTestCoverageReport FAILED\n\nFAILURE: Build failed with an exception.\n\n* What went wrong:\nExecution failed for task \':vpn:createDebugAndroidTestCoverageReport\'.\n> java.io.IOException: No coverage data to process in directories [/Users/abc/ws/prjName/module1/build/outputs/code_coverage/debugAndroidTest/connected]\n
Run Code Online (Sandbox Code Playgroud)\n我在模块1中有仪器测试
\n当设备未连接时,如何在生成 Jacoco 报告时排除仪器测试。
\n更新:
\n我可以通过以下方式为每个模块单独生成 Jacoco 报告
\n./gradlew testDebugUnitTestCoverage\n
Run Code Online (Sandbox Code Playgroud)\n但我正在寻找一份综合报告。如何将模块中的多个 jacoco 报告集成到一份报告中?
\n请从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"])
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
998 次 |
最近记录: |