Gradle 为其他模块生成覆盖范围

Gradle 为其他模块生成覆盖范围,gradle,code-coverage,android-espresso,jacoco,Gradle,Code Coverage,Android Espresso,Jacoco,我的项目结构如下::app,:core:app是Android应用程序项目,它依赖于拥有所有业务逻辑的:core 我有Espresso测试:app,由于所有的问题和指南,我能够运行并获得覆盖率报告。但覆盖范围仅限于:app中的代码 如何获得由我的浓缩咖啡仪器测试产生的所有项目(:app和:core)的保险?这可能吗 非常感谢您的帮助。即使您在问题中没有提到Jacoco,它也列在标签中,因此我假设您希望使用它创建覆盖率报告。Gradle Jacoco插件(apply plugin:'Jacoco'

我的项目结构如下:
:app
:core
<代码>:app是Android应用程序项目,它依赖于拥有所有业务逻辑的
:core

我有
Espresso
测试
:app
,由于所有的问题和指南,我能够运行并获得覆盖率报告。但覆盖范围仅限于
:app
中的代码

如何获得由我的
浓缩咖啡
仪器测试产生的所有项目(
:app
:core
)的保险?这可能吗


非常感谢您的帮助。

即使您在问题中没有提到Jacoco,它也列在标签中,因此我假设您希望使用它创建覆盖率报告。Gradle Jacoco插件(
apply plugin:'Jacoco'
)允许您创建类型为
JacocoReport
的自定义任务

定义此类任务时,可以指定源和类目录以及执行数据:

task jacocoTestReport(type: JacocoReport) {
    dependsOn // all your test tasks
    reports {
        xml.enabled = true
        html.enabled = true
    }
    sourceDirectories = // files() or fileTree() to your source files
    classDirectories = // files() or fileTree() to your class files
    executionData = // files() or fileTree() including all your test results
}
对于浓缩咖啡测试,执行数据应包括所有生成的
.ec
文件。您可以在Gradle根项目中定义此任务,并链接到子项目的文件和任务


对于自定义Jacoco报告任务,即使它旨在为多个测试类型创建统一的报告,也可以针对此多项目问题进行传输。

默认情况下,
Jacoco报告任务仅报告项目内源的覆盖率。您需要在
JacocoReport
任务上设置属性

app/build.gradle

apply plugin: 'java'
apply plugin: 'jacoco'

// tell gradle that :core must be evaluated before :app (so the sourceSets are configured)
evaluationDependsOn(':core') 

jacocoTestReport {
    def coreSourceSet = project(':core').sourceSets.main
    additionalSourceDirs.from coreSourceSet.allJava
    additionalClassDirs.from coreSourceSet.output
}