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

Gradle Android-遗留测试项目结构的测试覆盖率,android,gradle,jacoco,Android,Gradle,Jacoco,我正在将一个相当大且复杂的遗留项目迁移到Gradle。 我有很多库项目,每个项目都有自己的测试子项目。 项目结构如下所示: - LibraryX -- LibraryXTestsOne -- LibraryXTestsTwo - LibraryY -- LibraryYTests .... 每个库的配置如下所示: - LibraryX -- LibraryXTestsOne -- LibraryXTestsTwo - LibraryY -- LibraryYTests .... 主源集包

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

- LibraryX
-- LibraryXTestsOne
-- LibraryXTestsTwo
- LibraryY
-- LibraryYTests 
....
每个库的配置如下所示:

- LibraryX
-- LibraryXTestsOne
-- LibraryXTestsTwo
- LibraryY
-- LibraryYTests 
....
  • 主源集包含所有库代码
  • androidTest源集为空
  • 每个测试项目的配置如下:

    - LibraryX
    -- LibraryXTestsOne
    -- LibraryXTestsTwo
    - LibraryY
    -- LibraryYTests 
    ....
    
  • 它将父库作为依赖项列出
  • 主源集为空
  • androidTest源集包含所有测试代码
  • 通过这样的配置,我成功地使用:libraryTestsA:connectedAndroidTest运行了测试,但是我无法让测试覆盖率正常工作。我通过

    buildTypes{
       debug{ testCoverageEnabled true }
    }
    
    显然,没有检测父库的类,导致代码覆盖率为零


    有什么建议吗?

    事实证明,对于测试项目所依赖的所有项目/库,您只需将
    testCoverageEnabled
    设置为
    true
    。 这将足以为您的代码提供工具

    尽管如此,您仍然需要创建一个定制的jacocoReport任务,因为android插件提供的任务在项目主源集中查找类和源,而在像我这样的配置中,这些类和源是空的