Mit dem Android Gradle-Plug-in können Berichte zur Codeabdeckung erstellt werden, in denen der Prozentsatz des Codes erfasst wird, der von Ihren Tests abgedeckt wird. Auf dieser Seite wird beschrieben, wie Sie die Abdeckungsberichte aktivieren und Berichte erstellen.
Sie können für jeden Testtyp (Unit- und Instrumentierungstests) und jede Variante Abdeckungsberichte erstellen. Sie können auch einheitliche Abdeckungsberichte für verschiedene Testtypen, Module und Build-Varianten erstellen.
Codeabdeckung aktivieren
Die Codeabdeckung muss aktiviert werden. Setzen Sie dazu in den Build-Dateien auf Modulebene für jede Variante, für die Sie Abdeckungsberichte erhalten möchten, enableAndroidTestCoverage und enableUnitTestCoverage auf 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-Version ändern (optional)
Das 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' } }
Variantenspezifische Abdeckungsberichte generieren
Wenn Sie Abdeckungsberichte nur für Unit-Tests oder nur für Instrumentierungstests 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. Diese Aufgaben generieren einen einzelnen HTML-Bericht, in dem Abdeckungsdaten aus verschiedenen Testtypen (Unit- und Instrumentierungstests), Modulen und Build-Varianten zusammengefasst sind. So erhalten Sie in einem einzigen Dashboard einen umfassenden Überblick über die Codeabdeckung Ihres Projekts.
Vorbereitung
- Android-Gradle-Plug-in 9.5.0-alpha05 oder höher
- Codeabdeckung aktivieren
Führen Sie eine der folgenden Aufgaben über die Befehlszeile aus, um einen einheitlichen Bericht zu generieren:
| Abdeckungsumfang | Befehl | Beschreibung | Ort melden |
|---|---|---|---|
| Aktuelles Modul | ./gradlew :module-name:testAllSuites --continue |
Testet alle Test-Suites 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/testAllSuites/coverage-report/ |
| Aktuelles Modul und Abhängigkeiten | ./gradlew :module-name:testAllSuitesWithDependencies --continue |
Testet alle Test-Suites 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/testAllSuitesWithDependencies/coverage-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 aufschlüsseln. Klicken Sie auf eine Datei, um den Code mit Hervorhebungen für die Zeilen- und Zweigabdeckung aufzurufen:
- Grün: Abgedeckte Zeilen.
- Rot: Nicht abgedeckte Zeilen.
- Gelb: Teilweise Abdeckung (einige Anweisungen oder Verzweigungen fehlen).
Geräteinterne Codeabdeckung für instrumentierte Tests verwenden
Standardmäßig misst das AGP die Abdeckung von Instrumentierungstests, indem es die Klassen Ihrer App beim Erstellen der App mit JaCoCo instrumentiert. Ab AGP 9.6.0-alpha01 können Sie stattdessen die On-Device-Instrumentierung verwenden, bei der die Klassen Ihrer App während der Ausführung der Tests auf dem Testgerät instrumentiert werden. Weitere Informationen finden Sie unter Berichte zur Codeabdeckung ansehen (mit On-Device-Agent).