JaCoCo与Gradle Kotlin多模块Android项目-isTestCoverageEnabled实际做了什么



我正在配置一个Android多模块Gradle项目,该项目将Kotlin用于应用程序和Gradle构建文件(Gradle.build.kts(。

我使用的是Gradle 7.3.3。

首先,我将Jacobo插件添加到模块级build.gradle.kts:

...
plugins {
...
jacoco
}
...

然后我点击Android Studio中的图标;将项目与渐变文件同步">

接下来,我找到调试构建类型并添加以下内容:

isTestCoverageEnabled = true

当我随后运行./gradlew testDebugUnitTest时,会在<MODULE>/build/outputs/unit_test_code_coverage/debugUnitTest/testDebugUnitTest.exec的模块中生成一个文件。

但是,如果我不添加行isTestCoverageEnabled = true,或者如果我设置了isTestCoverageEnabled = false,则在<MODULE>/build/jacoco/testDebugUnitTest.exec的模块中会生成覆盖率结果文件。

当我生成每个.exec文件的HTML报告时;总计";底部的行具有匹配的计数。

这两个文件是否等效,只是根据isTestCoverageEnabled的值位于不同的目录中?

如果是这样的话,那么似乎只要插件中包含jacoco,那么无论是否添加isTestCoverageEnabled = true行,都会生成覆盖率结果。isTestCoverageEnabled除了更改输出目录之外,还会做其他事情吗?我错过了什么?

我在多个项目中与这个问题斗争了3年,但我有一个解决方案(或者更确切地说是解决了我的问题的人(。

Android根覆盖插件可以用于在Java和/或Kotlin多模块项目中组合jUnit和插入测试,而无需配置任何其他内容。它解决了我的以下问题:

  • 在多模块项目中获得覆盖
  • Kotlin的报道不正确
  • 将jUnit&仪器测试覆盖范围

已经确认,我的问题是由android gradle插件中的一个错误引起的,截至2022年8月,该问题尚未解决。

针对您的问题,isTestCoverageEnabled用于在android gradle插件中配置嵌入式JaCoCo,如上所述,这是已知的缺陷。使用JaCoCo插件可以在渐变文件中配置,但不使用AGP 中的嵌入式JaCoCo

相关内容

  • 没有找到相关文章

最新更新