gradle - 为其他模块生成覆盖率

标签 gradle code-coverage android-espresso jacoco

我的项目结构如下::app , :core . :app是Android应用项目,它依赖于:core它具有所有的业务逻辑。

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

如何获得由我的 :app 产生的所有项目( :coreEspresso )的覆盖范围仪器测试?这甚至可能吗?

任何帮助是极大的赞赏。

最佳答案

即使您在问题中没有提到 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
}

对于 Espresso 测试,执行数据应包括所有生成的 .ec文件。您可以在 Gradle 根项目中定义此任务,并链接到子项目的文件和任务。

an example对于自定义 Jacoco 报告任务,即使它旨在为多种测试类型创建统一报告,也可以针对这种多项目问题进行转移。

关于gradle - 为其他模块生成覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43057920/

相关文章:

testing - 如何按名称运行单个 cucumber 场景

Android Gradle 插件仅支持 Kotlin Gradle 插件版本 1.5.20 及更高版本

code-coverage - 如何在 Bullseye 中查看线路覆盖范围

java - EMMA 未能转储覆盖率数据 : java. io.FileNotFoundException : coverage. ec(权限被拒绝)

android - 无法编译AAR库

amazon-web-services - 使用Jenkins可以选择Spring Boot配置文件吗?

c++ - lcov 将带有函数声明的行标记为可达但未被覆盖

java - 如何使用 espresso 根据项目文本从 ListView 中单击项目?

android - Espresso android - IllegalStateException : UiAutomationService android.accessibilityservice.IAccessibilityServiceClient 已经注册

java - 如何使用 Espresso + JMockit