Android Gradle プラグインは、テストでカバーされるコードの割合を追跡するコード カバレッジ レポートを作成できます。このページでは、カバレッジ レポートを有効にしてレポートを生成する方法について説明します。
各バリアントのテストタイプ(単体テストとインストゥルメンテーション テスト)ごとにカバレッジ レポートを生成できます。また、さまざまなテストタイプ、モジュール、ビルド バリアントにわたる統合カバレッジ レポートを生成することもできます。
コード カバレッジを有効にする
カバレッジ レポートを取得するバリアントごとに、モジュール レベルのビルドファイルで enableAndroidTestCoverage と enableUnitTestCoverage を 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 を使用する必要がある場合は、モジュール レベルのビルドファイルで指定できます。
Kotlin
android { testCoverage { jacocoVersion = "JACOCO_VERSION" } }
Groovy
android { testCoverage { jacocoVersion = '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 |
統合コード カバレッジ レポートを生成する
testAllSuites と testAllSuitesWithDependencies の Gradle タスクを使用して、統合コード カバレッジ レポートを生成できます。これらのタスクにより、さまざまなテストタイプ(単体テストとインストルメンテーション テスト)、モジュール、ビルド バリアントのカバレッジ データを統合した単一の HTML レポートが生成されます。これにより、プロジェクトのコード カバレッジの包括的なビューが 1 つのダッシュボードに表示されます。
前提条件
- Android Gradle プラグイン 9.5.0-alpha05 以降
- コード カバレッジを有効にする
統合レポートを生成するには、コマンドラインから次のいずれかのタスクを実行します。
| 対象範囲スコープ | コマンド | 説明 | レポートの場所 |
|---|---|---|---|
| 現在のモジュール | ./gradlew :module-name:testAllSuites --continue |
すべてのテストスイートをテストし、現在のモジュールの統合カバレッジ レポートを生成して、すべてのテストタイプのデータをマージします。 | path-to-your-project/module-name/build/reports/testAllSuites/coverage-report/ |
| 現在のモジュールと依存関係 | ./gradlew :module-name:testAllSuitesWithDependencies --continue |
すべてのテストスイートをテストし、現在のモジュールとそのすべての依存関係に関する統合カバレッジ レポートを生成します。このタスクは、アプリ モジュールと、公開が有効になっているライブラリ モジュールで使用できます。 | path-to-your-project/module-name/build/reports/testAllSuitesWithDependencies/coverage-report/ |
生成された HTML レポートのランディング ページには、すべてのモジュールの概要が表示されます。モジュールからパッケージ、パッケージからクラス、クラスからソースファイルへとドリルダウンできます。任意のファイルをクリックすると、行とブランチのカバレッジがハイライト表示されたコードが表示されます。
- 緑: 実行された行。
- 赤: 実行されていない行。
- 黄色: 部分的なカバレッジ(一部の命令またはブランチが欠落)。
インストルメンテーション テストにオンデバイス コード カバレッジを使用する
デフォルトでは、AGP は、アプリのビルド時に JaCoCo を使用してアプリのクラスをインストルメント化することで、インストルメンテーション テストのカバレッジを測定します。AGP 9.6.0-alpha01 以降では、代わりにオンデバイス インストルメンテーションを使用できます。これは、テストの実行中にテストデバイスでアプリのクラスをインストルメント化します。詳細については、コード カバレッジ レポートを表示する(オンデバイス エージェントを使用)をご覧ください。