查看代码覆盖率报告

Android Gradle 插件可以创建代码覆盖率报告,用于跟踪测试覆盖的代码百分比。本页介绍如何启用覆盖率报告并生成报告。

您可以针对每个变体的每种测试类型(单元测试和插桩测试)生成覆盖率报告。您还可以生成涵盖不同测试类型、模块和 build 变体的统一覆盖率报告。

启用代码覆盖率

必须在模块级 build 文件中将 enableAndroidTestCoverageenableUnitTestCoverage 设置为 true,才能为要获取覆盖率报告的每个变体启用代码覆盖率:

Kotlin

android {
    // ...
    buildTypes {
        debug {
            // Enable coverage for unit tests
            enableUnitTestCoverage = true
            // Enable coverage for instrumentation tests
            enableAndroidTestCoverage = true
        }
    }
}

Groovy

android {
    // ...
    buildTypes {
        debug {
            // Enable coverage for unit tests
            enableUnitTestCoverage true
            // Enable coverage for instrumentation tests
            enableAndroidTestCoverage true
        }
    }
}

更改 Jacoco 版本(可选)

当您在模块上启用覆盖率时,AGP 会自动应用 Jacoco。不过,如果您需要使用特定版本的 Jacoco,可以在模块级 build 文件中指定该版本:

Kotlin

android {
    jacoco {
        version = "JACOCO_VERSION"
    }
}

Groovy

android {
    jacoco {
        version = 'JACOCO_VERSION'
    }
}

生成特定变体的覆盖率报告

如需仅针对特定变体的单元测试或插桩测试生成覆盖率报告,请运行相应的任务。

测试类型 命令 报告位置
单元测试 ./gradlew :module-name:createVariantNameUnitTestCoverageReport path-to-your-project/module-name/build/reports/coverage/test/variant/index.html
插桩测试 ./gradlew :module-name:createVariantNameAndroidTestCoverageReport path-to-your-project/module-name/build/reports/coverage/androidTest/variant/connected/index.html

生成统一的代码覆盖率报告

您可以使用 createCoverageReportcreateAggregatedCoverageReport Gradle 任务生成统一的代码覆盖率报告。您可以使用这些任务生成单个 HTML 报告,其中汇总了来自不同测试类型(单元测试和插桩测试)、模块和 build 变体的覆盖率数据。这样一来,您就可以在一个信息中心内全面了解项目的代码覆盖率。

前提条件

如需生成统一报告,请在命令行中运行以下任务之一:

覆盖范围 命令 说明 报告位置
当前模块 ./gradlew :module-name:createCoverageReport 为当前模块生成统一的覆盖率报告,合并来自所有测试类型的数据。 path-to-your-project/module-name/build/reports/code_coverage_html_report/
当前模块和依赖项 ./gradlew :module-name:createAggregatedCoverageReport 为当前模块及其所有依赖项生成统一的覆盖率报告。此任务适用于应用模块和已启用发布功能的库模块 path-to-your-project/module-name/build/reports/aggregated_code_coverage_html_report/

生成的 HTML 报告着陆页会显示所有模块的简要摘要。您可以从模块深入到软件包,从软件包深入到类,再从类深入到源文件。 点击任意文件即可查看代码,其中会突出显示行覆盖率和分支覆盖率:

  • 绿色:已覆盖的代码行。
  • 红色:未覆盖的行。
  • 黄色:部分覆盖(遗漏了一些指令或分支)。