【发布时间】:2015-01-16 08:59:27
【问题描述】:
我正在尝试让 jacoco 为我的 android 测试项目创建代码覆盖率报告。我在 build.gradle 中有以下内容:
apply plugin: 'com.android.application'
apply plugin: 'jacoco'
...
jacoco {
toolVersion = "0.7.1.201405082137"
}
...
android {
buildTypes {
release {
}
debug {
testCoverageEnabled true
}
}
}
当我运行 gradlew -i createDebugCoverageReport 时,我得到一个覆盖率报告,但它是空的。 gradle执行结束如下:
:androidTest:connectedAndroidTest (Thread[main,5,main]) completed. Took 2 mins 36.951 secs.
:androidTest:createDebugCoverageReport (Thread[main,5,main]) started.
:androidTest:createDebugCoverageReport
Executing task ':androidTest:createDebugCoverageReport' (up-to-date check took 0.006 secs) due to:
Output file /home/akos/src/androidTest/build/outputs/reports/coverage/debug has changed.
Output file /home/akos/src/androidTest/build/outputs/reports/coverage/debug/index.html has been removed.
Output file /home/akos/src/androidTest/build/outputs/reports/coverage/debug/.resources/package.gif has been removed.
[ant:reportWithJacoco] Loading execution data file /home/akos/src/androidTest/build/outputs/code-coverage/connected/coverage.ec
[ant:reportWithJacoco] Writing bundle 'debug' with 3 classes
:androidTest:createDebugCoverageReport (Thread[main,5,main]) completed. Took 0.215 secs.
BUILD SUCCESSFUL
Total time: 4 mins 53.467 secs
实际上,上面引用的coverage.ec 文件是空的(长度为0)
在目录 build/intermediates/coverage-instrumented-classes/ 中,我似乎有检测类文件
这是 gradle 2.1
我做错了什么?
【问题讨论】:
-
您的项目结构是否遵循 Gradle 结构.. 如果您的 src 代码位于 src/java 或 src/main/java 中?您在哪里定义 .exec 文件的位置(什么是 .ec)?
-
这不是 gradle 结构,但我在构建文件中定义它们。也许我做得不够好。这就是我所拥有的: sourceSets { androidTest { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['res']aidl.srcDirs = ['src'] renderscript.srcDirs = [ 'src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] } } 和 sourceSets 中的 'main' 相同
-
我希望 Peter N 能对此有所了解。
-
Ákos Maróy,您找到解决问题的方法了吗?我也面临同样的问题。如果您有解决方案,请提供帮助
标签: android gradle code-coverage jacoco