我正在尝试从我们的测试套件获取覆盖率报告,该套件需要与 Android Test Orchestrator 一起运行。
按照他们的建议我添加了
testInstrumentationRunnerArguments coverageFilePath: '/data/local/tmp/codeCoverage'
但我仍然在接受
java.io.IOException: No coverage data to process in directories [[buildDr]/outputs/code_coverage/stageTestDebugAndroidTest/connected]
我认为它可能与测试发行说明存档页面中的这一行相关
仅在“覆盖范围”和 'coverageFilePath' 参数已传递。
我尝试过添加
testInstrumentationRunnerArguments coverage: 'true'
这没有什么区别,我找不到任何关于实际应该通过什么的信息。
你知道我错过了什么吗?
指向工作示例的链接也非常好。
这似乎是通过一些新参数修复的,如本示例所示: https://github.com/android/testing-samples/tree/main/runner/AndroidTestOrchestratorWithTestCoverageSample
我只需要修改这个库:
coreVersion = "1.6.0-alpha05"
,除此之外它按原样工作。
我们需要添加协调器:
androidTestUtil "androidx.test:orchestrator:" + rootProject.orchestratorVersion
androidTestUtil "androidx.test.services:test-services:" + rootProject.testServicesVersion
启用跑步者上的
useTestStorageService
和 clearPackageData
标志:
testInstrumentationRunnerArguments clearPackageData: "true"
testInstrumentationRunnerArguments useTestStorageService: "true"
设置代码覆盖率和编排器的标志:
buildTypes {
debug {
testCoverageEnabled true
}
}
testOptions {
execution "ANDROIDX_TEST_ORCHESTRATOR"
}
最后,请确保您指向正确的
*.ec
文件,如果您使用的是自定义 JaCoCo 任务,则该任务不会显示在 GitHub 示例中。
include("outputs/code_coverage/debugAndroidTest/connected/*/*.ec")
如果仍然不起作用,某些库和版本可能需要调整,这些是对我有用的库和版本(其中大多数都按原样存在于存储库中):
ext {
androidxAnnotationVersion = "1.2.0"
guavaVersion = "30.1.1-android"
coreVersion = "1.6.0-alpha05"
extJUnitVersion = "1.2.0-alpha01"
runnerVersion = "1.6.0-alpha03"
rulesVersion = "1.6.0-alpha01"
testServicesVersion = "1.5.0-alpha01"
orchestratorVersion = "1.5.0-alpha01"
espressoVersion = "3.6.0-alpha01"
truthVersion = "1.1.3"
}