Gradle Android - 对传统测试项目结构的测试覆盖率

时间:2015-06-03 18:01:49

标签: android gradle jacoco

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

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

每个库配置如下:

  1. 主要源集包含所有库代码
  2. androidTest源集是空的
  3. 每个测试项目配置如下:

    1. 它将父库列为依赖项
    2. 主要的源集是空的
    3. androidTest sourceset包含所有测试代码
    4. 通过这样的配置,我设法运行测试:libraryTestsA:connectedAndroidTest,但我无法使测试覆盖率起作用。我通过

      启用它
      buildTypes{
         debug{ testCoverageEnabled true }
      }
      

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

      有什么建议吗?

1 个答案:

答案 0 :(得分:0)

事实证明,您只需要为测试项目所依赖的所有项目/库设置testCoverageEnabledtrue。 这足以检测您的代码。

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