在我的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%。一切都是"错过"。
首先我认为问题可能是源代码和测试代码的位置,但它们位于/src/main/java/
和/src/androidTest/java/
任何人都知道如何解决这个问题?
答案 0 :(得分:1)
我对Jacoco的个人经历并不好。它没有正确覆盖,并且当它添加时,它不会在添加新测试时更新覆盖范围。
我刚删除它,似乎并不支持Jacoco。
根据@kolargol00的说明,对于你的问题:
您使用过时版本的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%的覆盖率报告,确保所有测试都通过