Das Android-Gradle-Plug-in kann Berichte zur Codeabdeckung erstellen, in denen der Prozentsatz Ihres Codes erfasst wird, der von Ihren Tests abgedeckt wird. Auf dieser Seite wird beschrieben, wie Sie die Berichterstellung zur Codeabdeckung aktivieren und Berichte erstellen.
Sie können Abdeckungsberichte für jeden Testtyp (Unit- und Instrumentierungstests) für jede Variante erstellen. Sie können auch einheitliche Berichte zur Codeabdeckung für verschiedene Testtypen, Module und Build-Varianten erstellen.
Codeabdeckung aktivieren
Die Codeabdeckung muss aktiviert werden, indem Sie enableAndroidTestCoverage und enableUnitTestCoverage in den Build-Dateien auf Modulebene für jede Variante, für die Sie Abdeckungsberichte erhalten möchten, auf true setzen:
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-Version ändern (optional)
AGP wendet Jacoco automatisch an, wenn Sie die Abdeckung für Ihre Module aktivieren. Wenn Sie jedoch eine bestimmte Version von Jacoco verwenden müssen, können Sie diese in der Build-Datei auf Modulebene angeben:
Kotlin
android { testCoverage { jacocoVersion = "JACOCO_VERSION" } }
Groovy
android { testCoverage { jacocoVersion = 'JACOCO_VERSION' } }
Variantenbezogene Berichte zur Abdeckung erstellen
Wenn Sie Abdeckungsberichte nur für Einheitentests oder nur für instrumentierte Tests für eine bestimmte Variante generieren möchten, führen Sie die entsprechenden Aufgaben aus.
| Testtyp | Befehl | Ort melden |
|---|---|---|
| Einheitentests | ./gradlew :module-name:createVariantNameUnitTestCoverageReport |
path-to-your-project/module-name/build/reports/coverage/test/variant/index.html |
| Instrumentierte Tests | ./gradlew :module-name:createVariantNameAndroidTestCoverageReport |
path-to-your-project/module-name/build/reports/coverage/androidTest/variant/connected/index.html |
Einheitliche Berichte zur Codeabdeckung erstellen
Mit den Gradle-Tasks testAllSuites und testAllSuitesWithDependencies können Sie einheitliche Berichte zur Codeabdeckung erstellen. Bei diesen Aufgaben wird ein einzelner HTML-Bericht generiert, in dem die Abdeckungsdaten aus verschiedenen Testtypen (Unit- und Instrumentierungstests), Modulen und Build-Varianten zusammengefasst werden. So erhalten Sie einen umfassenden Überblick über die Codeabdeckung Ihres Projekts in einem einzigen Dashboard.
Vorbereitung
- Android-Gradle-Plug-in 9.5.0-alpha05 oder höher
- Codeabdeckung aktivieren
Führen Sie einen der folgenden Befehle über die Befehlszeile aus, um einen einheitlichen Bericht zu erstellen:
| Umfang der Abdeckung | Befehl | Beschreibung | Ort melden |
|---|---|---|---|
| Aktuelles Modul | ./gradlew :module-name:testAllSuites |
Führt alle Test-Suites aus und generiert einen einheitlichen Abdeckungsbericht für das aktuelle Modul, in dem Daten aus allen Testtypen zusammengeführt werden. | path-to-your-project/module-name/build/reports/code_coverage_html_report/ |
| Aktuelles Modul und Abhängigkeiten | ./gradlew :module-name:testAllSuitesWithDependencies |
Führt alle Test-Suites aus und generiert einen einheitlichen Abdeckungsbericht für das aktuelle Modul und alle seine Abhängigkeiten. Diese Aufgabe ist für App-Module und Bibliotheksmodule mit aktivierter Veröffentlichung verfügbar. | path-to-your-project/module-name/build/reports/aggregated_code_coverage_html_report/ |
Auf der Landingpage des generierten HTML-Berichts wird eine allgemeine Zusammenfassung aller Module angezeigt. Sie können von Modul zu Paket, von Paket zu Klasse und von Klasse zu Quelldatei wechseln. Klicken Sie auf eine beliebige Datei, um den Code mit Hervorhebungen für die Zeilen- und Zweigabdeckung zu sehen:
- Grün: Abgedeckte Zeilen.
- Rot: Nicht abgedeckte Zeilen.
- Gelb: Teilweise Abdeckung (einige Anweisungen oder Zweige wurden nicht abgedeckt).