2017-02-25 157 views
1

我试图让jacoco为我的android测试项目创建一个代码覆盖率报告。android jacoco覆盖显示0%与gradle但是有95%的测试覆盖代码

摇篮版本classpath 'com.android.tools.build:gradle:2.0.0'

我在的build.gradle如下:

apply plugin: 'com.android.application' 
apply plugin: 'jacoco' 

jacoco { 
    toolVersion = "0.7.1.201405082137" 
} 

android { 
    buildTypes { 
     release { 
     } 
     debug { 
      testCoverageEnabled true 
     } 
    } 
} 

它显示报告如下图像 enter image description here

有代码覆盖率的近95%(当我在2015年发布了同样的报告,报告显示为95%)。自那时起,代码和测试文件夹中没有太多变化。因此,理想的应该显示的覆盖率是这样的

enter image description here

我试图与这两个JDK7 & 8,但相同的结果运行报告。也尝试改用JaCoCo的最新版本,但结果仍然相同。

任何想法为什么报告显示为0%的覆盖率?当运行Gradle任务时,它会在androidTest文件夹中成功运行我的测试。 enter image description here

Facing same issue as mentioned in this question - This question is unanswered yet

+0

当询问关于由您的代码中的问题的问题,你会得到更好的答案,如果你提供的代码的人可以用它来重现问题 - 看http://stackoverflow.com/帮助/ mcve – Godin

+0

这是回购 https://github.com/pwittchen/prefser/tree/master/library 它不必被投票回购。由于随所有代码库提供的Gradle版本出现此问题 – Guna

回答

0

使用覆盖的生成方法your project命令

./gradlew clean createDebugCoverageReport 

作品就好了:

report

,我唯一改变的 - 为到25buildToolsVersion23.0.125.0.2,因为这是我有的版本。

+0

您正在使用的AndroidStudio版本和Java版本是什么? – Guna

+0

@Guna我相信,使用最新发布的版本是一个非常好的做法,这就是我所做的,截至今天:Android Studio 2.2.3,Oracle JDK 8u121,在Linux上 – Godin

+0

我在三星标签4上运行它。是你运行它的设备? – Guna

3

我有完全相同的问题。但是使用Guna的评论(2017年2月27日),似乎问题是由于在某些三星设备上运行覆盖测试引起的。

  • 一些较新的三星设备,当你运行的gradle Jacoco任务createDebugAndroidTestCoverageReportcreateDebugCoverageReport,它将运行单元测试,但显示0%的覆盖率

  • 但在谷歌Nexus 5或大部分模拟器,当你运行相同Jacoco任务,它会做工精细和显示正确的报道。较老的三星设备也很好。

这很奇怪。

还记得确保所有的测试通过第一。这是Jacoco的另一个限制。因为即使整个套件中有一个小测试失败,它也不会生成测试覆盖率报告。

参见:http://blog.wittchen.biz.pl/test-coverage-report-for-android-application

+0

'还记得确保你所有的测试都先通过'。那条线救了我。感谢您的发布。 – anujprashar

+0

良好的老三星烦人的开发者自2009年以来。当然,它完美的Nexus 5。 – Alex