使用JaCoCo和Gradle进行espresso测试的代码覆盖率为0%

时间:2016-02-11 11:07:54

标签: android gradle android-gradle android-espresso jacoco

在我的esCopresso测试的JaCoCo代码覆盖率报告中,错过了所有线路和分支。我在一个使用gradle 1.5.0构建的Android应用程序中使用JaCoCo。

我的gradle配置:

apply plugin: 'jacoco'

android {
   buildTypes {
      debug {
         testCoverageEnabled = true
      }
   }
}

jacoco {
   version '0.7.5.201505241946'
}

我关注了这篇博文:Test coverage report for Android application

当我运行createDebugCoverageReport时,报告将在正确的文件夹(build / reports / coverage / flavor / debug / index.html)中生成。但是,当我打开覆盖率报告时,我的代码覆盖率在每个指令和分支上都是0%。一切都是"错过"。

enter image description here

首先我认为问题可能是源代码和测试代码的位置,但它们位于/src/main/java//src/androidTest/java/

任何人都知道如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

我对Jacoco的个人经历并不好。它没有正确覆盖,并且当它添加时,它不会在添加新测试时更新覆盖范围。

我刚删除它,似乎并不支持Jacoco。

根据@kolargol00的说明,对于你的问题:

Answer

您使用过时版本的JaCoCo插件的任何特殊原因?对于Java 8支持,您必须至少使用0.7.0版本(请参阅changelog)。

在您的配置中,报告目标已绑定到验证阶段,因此运行mvn test不会生成任何报告,因为它不会运行验证阶段(test phase comes before verify)。您必须使用mvn verify来执行测试并生成报告。

JaCoCo项目提供了示例Maven配置。您可以尝试" this POM file for a JAR project runs JUnit tests under code coverage and creates a coverage report"。

答案 1 :(得分:1)

根据我的经验,如果任何一个测试用例失败,那么我们得到0%的覆盖率报告,确保所有测试都通过