Afficher les rapports de couverture du code

Le plug-in Android Gradle peut créer des rapports de couverture de code qui suivent le pourcentage de votre code couvert par vos tests. Cette page explique comment activer les rapports de couverture et les générer.

Vous pouvez générer des rapports de couverture pour chaque type de test (unité et instrumentation) pour chaque variante. Vous pouvez également générer des rapports de couverture unifiés pour différents types de tests, modules et variantes de compilation.

Activer la couverture de code

La couverture de code doit être activée en définissant enableAndroidTestCoverage et enableUnitTestCoverage sur true dans les fichiers de compilation au niveau du module pour chaque variante pour laquelle vous souhaitez obtenir des rapports de couverture :

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
        }
    }
}

Modifier la version de Jacoco (facultatif)

AGP applique automatiquement Jacoco lorsque vous activez la couverture sur vos modules. Toutefois, si vous devez utiliser une version spécifique de Jacoco, vous pouvez l'indiquer dans votre fichier de compilation au niveau du module :

Kotlin

android {
    testCoverage {
        jacocoVersion = "JACOCO_VERSION"
    }
}

Groovy

android {
    testCoverage {
        jacocoVersion = 'JACOCO_VERSION'
    }
}

Générer des rapports de couverture spécifiques aux variantes

Pour générer des rapports de couverture uniquement pour les tests unitaires ou uniquement pour les tests instrumentés d'une variante spécifique, exécutez les tâches correspondantes.

Type de test Commande Emplacement du rapport
Tests unitaires ./gradlew :module-name:createVariantNameUnitTestCoverageReport path-to-your-project/module-name/build/reports/coverage/test/variant/index.html
Tests instrumentés ./gradlew :module-name:createVariantNameAndroidTestCoverageReport path-to-your-project/module-name/build/reports/coverage/androidTest/variant/connected/index.html

Générer des rapports de couverture de code unifiés

Vous pouvez générer des rapports de couverture de code unifiés à l'aide des tâches Gradle testAllSuites et testAllSuitesWithDependencies. Ces tâches génèrent un rapport HTML unique qui consolide les données de couverture de différents types de tests (tests unitaires et d'instrumentation), de modules et de variantes de compilation. Vous obtenez ainsi une vue complète de la couverture de code de votre projet dans un seul tableau de bord.

Prérequis

Pour générer un rapport unifié, exécutez l'une des tâches suivantes à partir de la ligne de commande :

Champ d'application de la couverture Commande Description Emplacement du rapport
Module actuel ./gradlew :module-name:testAllSuites Teste toutes les suites de tests et génère un rapport de couverture unifié pour le module actuel, en fusionnant les données de tous les types de tests. path-to-your-project/module-name/build/reports/code_coverage_html_report/
Module actuel et dépendances ./gradlew :module-name:testAllSuitesWithDependencies Teste toutes les suites de tests et génère un rapport de couverture unifié pour le module actuel et toutes ses dépendances. Cette tâche est disponible pour les modules d'application et les modules de bibliothèque avec publication activée. path-to-your-project/module-name/build/reports/aggregated_code_coverage_html_report/

La page de destination du rapport HTML généré affiche un résumé général de tous les modules. Vous pouvez passer d'un module à un package, d'un package à une classe et d'une classe à un fichier source. Cliquez sur un fichier pour afficher le code avec la couverture des lignes et des branches en surbrillance :

  • Vert : lignes couvertes.
  • Rouge : lignes non couvertes.
  • Jaune : couverture partielle (certaines instructions ou branches ont été manquées).