Swe*_*lla 5 jacoco android-gradle-plugin
我试图仅执行单元测试并生成 jacoco 测试报告,但我总是看到一条失败消息:
Execution failed for task ':App:connectedDebugAndroidTest'.
> com.android.builder.testing.api.DeviceException: No connected devices!
Run Code Online (Sandbox Code Playgroud)
等级代码:
apply plugin: 'jacoco'
jacoco {
toolVersion = "0.8.1"
}
task jacocoTestReport(type: JacocoReport, dependsOn: ['testTpsDebugUnitTest', 'create<build-vairant>DebugCoverageReport']) {
group = "reporting"
description = "Generate unified Jacoco code coverage report"
reports {
xml.enabled false
csv.enabled false
html.destination file("${buildDir}/reports/jacocoHtml")
}
def fileFilter = [
'**/*Test*',
'**/*_MembersInjector.class',
'**/*_Factory.class']
def debugTree = fileTree(dir: "${buildDir}/intermediates/classes/<build-variant>/debug", excludes: fileFilter)
def mainSrc = "${project.projectDir}/src/main/java"
sourceDirectories = files([mainSrc])
classDirectories = files([debugTree])
executionData = fileTree(dir: "$buildDir", includes: [
"jacoco/test<build-variant>DebugUnitTest.exec"
])
Run Code Online (Sandbox Code Playgroud)
我用命令执行:
./gradlew -Pcoverage clean jacocoTestReport
Run Code Online (Sandbox Code Playgroud)
请帮助解决这个问题,这样它只执行单元测试,而不要求设备!
我在调试 Jacoco 安装时看到了这个问题,幸运的是,这是解决方案的开始。
如果您正在运行单元测试(包括 Jacoco 单元测试),则不需要设备。AndroidTests 需要设备,而不是单元测试。
安装所有 Jacoco 更改到 gradle 并重新同步后:
。
gradle app:createDebugUnitTestCoverageReport并点击 。这将启动 Jacoco 进程运行。由于它通常依赖于单元测试(假设您的 gradle 配置正确),因此它将强制首先运行单元测试。您将在 gradle 中指定的位置找到报告(默认位置类似于 ./app/build/reports/coverage/test/debug/index.html)。
我的问题是我在第 3 步中输入了错误的单元测试。我输入gradle app:createDebug...并接受了第一个建议。这是错误的!它放置了createDebugAndroidTestUnitCoverageReport,这不是我想要的(并导致请求设备时出错)。
| 归档时间: |
|
| 查看次数: |
2135 次 |
| 最近记录: |