Gradle Android - 遗留测试项目结构的测试覆盖率

Gradle Android - Test coverage on legacy test projects structure

我正在将一个相当大且复杂的遗留项目迁移到 Gradle。 我有很多图书馆项目,每个项目都有自己的测试子项目。 项目结构如下:

- LibraryX
-- LibraryXTestsOne
-- LibraryXTestsTwo
- LibraryY
-- LibraryYTests 
....

各库配置如下:

  1. 主源集包含所有库代码
  2. androidTest 源集为空

各测试项目配置如下:

  1. 它将父库列为依赖项
  2. 主源集为空
  3. androidTest 源集包含所有测试代码

通过这样的配置,我设法 运行 使用 :libraryTestsA:connectedAndroidTest 进行测试,但我无法使测试覆盖率正常工作。我通过

启用它
buildTypes{
   debug{ testCoverageEnabled true }
}

显然,父库的 类 未检测导致代码覆盖为零。

有什么建议吗?

原来只需要将测试项目依赖的所有projects/libraries设置为testCoverageEnabledtrue即可。 这足以检测您的代码。

您仍然需要创建一个自定义 jacocoReport 任务,因为 android 插件提供的任务会查找 类 和项目中的资源主源集,在像我这样的配置中是空的。