【问题标题】:JaCoCo shows 0% coverage, even all tests had passedJaCoCo 显示 0% 的覆盖率,甚至所有测试都已通过
【发布时间】:2019-04-08 14:10:11
【问题描述】:
  1. 我在androidTest目录下写了一些测试用例。
  2. 我正在使用 androidx (testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner")
  3. 添加的依赖项:

    androidTestImplementation 'androidx.test:runner:1.1.0'

    androidTestImplementation 'androidx.test:rules:1.1.0'

  4. 还添加了 JaCoCo 作为依赖项。

  5. 当我运行createDebugAndroidTestCoverageReport Gradle 任务时,所有测试用例都运行成功,但报告中的覆盖率为 0%

我猜这是由于这个错误:

V/InstrumentationResultParser:错误:无法生成 Emma/JaCoCo 覆盖。 V/InstrumentationResultParser: INSTRUMENTATION_CODE: -1

【问题讨论】:

  • 您可能没有定义正确的classDirectories;验证一次。
  • 我也定义了目录。 def fileFilter = ['*/R.class', '**/R$.class', '*/BuildConfig.', '*/Manifest .*', '*/*Test.*', 'android/**/*.*'] def debugTree = fileTree(dir: "${buildDir}/intermediates/类/调试”,排除:fileFilter) def mainSrc = "${project.projectDir}/src/main/java" sourceDirectories = files([mainSrc]) classDirectories = files([debugTree])

标签: android android-testing jacoco androidx


【解决方案1】:

Google 刚刚将我重定向到我自己的答案...

事实证明,对于 Android 项目,一个(同时)必须使用类似这样的路径:

"${project.buildDir}/intermediates/javac/debug/classes"

如果您想知道... JaCoCo 仅适用于test 中的@RunWith(JUnit4.class) Java 单元测试(但不适用于androidTest 中的@RunWith(AndroidJUnit4.class) Android 集成测试)。

【讨论】:

  • 我也试过你的方法,但还是同样的错误InstrumentationResultParser: Error: Failed to generate Emma/JaCoCo coverage. 09:41:33 V/InstrumentationResultParser: INSTRUMENTATION_CODE: -1
  • @Subhan 您是否验证了路径,*.class 文件确实位于那里?我故意写了“类似的东西”,因为这可能会略有不同,具体取决于项目的构建配置。您需要使用文件浏览器告诉您使用的任何内容,而不是我的建议。这只是一个提示,在哪里可以找到它们。
  • 是的,我已经根据这里的构建目录查看了文件路径。但还是没有成功
  • 我应该在哪里指定这个路径?你有 git 专用的吗?
  • 我不确定事情是否发生了变化或我的配置是否错误,但给定的路径只包含 databinding 的东西。将类目录更改为${buildDir}/tmp/kotlin-classes/debug 似乎有所帮助。仍然不对,但我希望这可以为将来的某人提供一个提示。
猜你喜欢
  • 1970-01-01
  • 2019-03-19
  • 2017-05-31
  • 1970-01-01
  • 1970-01-01
  • 2018-02-15
  • 2021-02-11
  • 2016-11-17
  • 2015-04-19
相关资源
最近更新 更多