Gradle Android - 遗留测试项目结构的测试覆盖率
Gradle Android - Test coverage on legacy test projects structure
我正在将一个相当大且复杂的遗留项目迁移到 Gradle。
我有很多图书馆项目,每个项目都有自己的测试子项目。
项目结构如下:
- LibraryX
-- LibraryXTestsOne
-- LibraryXTestsTwo
- LibraryY
-- LibraryYTests
....
各库配置如下:
- 主源集包含所有库代码
- androidTest 源集为空
各测试项目配置如下:
- 它将父库列为依赖项
- 主源集为空
- androidTest 源集包含所有测试代码
通过这样的配置,我设法 运行 使用 :libraryTestsA:connectedAndroidTest 进行测试,但我无法使测试覆盖率正常工作。我通过
启用它
buildTypes{
debug{ testCoverageEnabled true }
}
显然,父库的 类 未检测导致代码覆盖为零。
有什么建议吗?
原来只需要将测试项目依赖的所有projects/libraries设置为testCoverageEnabled
到true
即可。
这足以检测您的代码。
您仍然需要创建一个自定义 jacocoReport 任务,因为 android 插件提供的任务会查找 类 和项目中的资源主源集,在像我这样的配置中是空的。
我正在将一个相当大且复杂的遗留项目迁移到 Gradle。 我有很多图书馆项目,每个项目都有自己的测试子项目。 项目结构如下:
- LibraryX
-- LibraryXTestsOne
-- LibraryXTestsTwo
- LibraryY
-- LibraryYTests
....
各库配置如下:
- 主源集包含所有库代码
- androidTest 源集为空
各测试项目配置如下:
- 它将父库列为依赖项
- 主源集为空
- androidTest 源集包含所有测试代码
通过这样的配置,我设法 运行 使用 :libraryTestsA:connectedAndroidTest 进行测试,但我无法使测试覆盖率正常工作。我通过
启用它buildTypes{
debug{ testCoverageEnabled true }
}
显然,父库的 类 未检测导致代码覆盖为零。
有什么建议吗?
原来只需要将测试项目依赖的所有projects/libraries设置为testCoverageEnabled
到true
即可。
这足以检测您的代码。
您仍然需要创建一个自定义 jacocoReport 任务,因为 android 插件提供的任务会查找 类 和项目中的资源主源集,在像我这样的配置中是空的。