Il plug-in Android per Gradle può creare report sulla copertura del codice che monitorano la percentuale del codice coperta dai test. Questa pagina descrive come attivare i report sulla copertura e generare report.
Puoi generare report sulla copertura per ogni tipo di test (unità e strumentazione) per ogni variante. Puoi anche generare report di copertura unificati per diversi tipi di test, moduli e varianti di compilazione.
Abilita la copertura del codice
La copertura del codice deve essere attivata impostando enableAndroidTestCoverage e
enableUnitTestCoverage su true nei file di build a livello di modulo per ogni
variante per cui vuoi ricevere i report sulla copertura:
Kotlin
android { // ... buildTypes { debug { // Enable coverage for unit tests enableUnitTestCoverage = true // Enable coverage for instrumentation tests enableAndroidTestCoverage = true } } }
Alla moda
android { // ... buildTypes { debug { // Enable coverage for unit tests enableUnitTestCoverage true // Enable coverage for instrumentation tests enableAndroidTestCoverage true } } }
(Facoltativo) Modifica la versione di Jacoco
AGP applica automaticamente Jacoco quando attivi la copertura sui tuoi moduli. Tuttavia, se devi utilizzare una versione specifica di Jacoco, puoi specificarla nel file di build a livello di modulo:
Kotlin
android { testCoverage { jacocoVersion = "JACOCO_VERSION" } }
Alla moda
android { testCoverage { jacocoVersion = 'JACOCO_VERSION' } }
Genera report sulla copertura specifici per le varianti
Per generare report sulla copertura solo per i test delle unità o solo per i test di instrumentazione per una variante specifica, esegui le attività corrispondenti.
| Tipo di test | Comando | Posizione segnalazione |
|---|---|---|
| Test delle unità | ./gradlew :module-name:createVariantNameUnitTestCoverageReport |
path-to-your-project/module-name/build/reports/coverage/test/variant/index.html |
| Test strumentati | ./gradlew :module-name:createVariantNameAndroidTestCoverageReport |
path-to-your-project/module-name/build/reports/coverage/androidTest/variant/connected/index.html |
Genera report unificati sulla copertura del codice
Puoi generare report unificati sulla copertura del codice utilizzando le attività Gradle testAllSuites
e testAllSuitesWithDependencies. Queste attività genereranno un
singolo report HTML che consolida i dati di copertura di diversi tipi di test
(unità e strumentazione), moduli e varianti di compilazione. In questo modo, avrai una panoramica completa della copertura del codice del progetto in un'unica dashboard.
Prerequisiti
- Plug-in Android per Gradle 9.5.0-alpha05 o versioni successive
- Attiva la copertura del codice
Per generare un report unificato, esegui una delle seguenti attività dalla riga di comando:
| Ambito di copertura | Comando | Descrizione | Posizione segnalazione |
|---|---|---|---|
| Modulo attuale | ./gradlew :module-name:testAllSuites --continue |
Testa tutte le suite di test e genera un report di copertura unificato per il modulo corrente, unendo i dati di tutti i tipi di test. | path-to-your-project/module-name/build/reports/testAllSuites/coverage-report/ |
| Modulo corrente e dipendenze | ./gradlew :module-name:testAllSuitesWithDependencies --continue |
Testa tutte le suite di test e genera un report di copertura unificato per il modulo corrente e tutte le sue dipendenze. Questa attività è disponibile per i moduli dell'app e i moduli della libreria con pubblicazione abilitata. | path-to-your-project/module-name/build/reports/testAllSuitesWithDependencies/coverage-report/ |
La pagina di destinazione del report HTML generato mostra un riepilogo di alto livello di tutti i moduli. Puoi eseguire il drill-down dal modulo al pacchetto, dal pacchetto alla classe e dalla classe al file di origine. Fai clic su un file per visualizzare il codice con l'evidenziazione della copertura di righe e rami:
- Verde: linee coperte.
- Rosso: righe non coperte.
- Giallo: copertura parziale (alcune istruzioni o rami non sono stati eseguiti).
Utilizza la copertura del codice on-device per i test di instrumentazione
Per impostazione predefinita, AGP misura la copertura dei test di instrumentazione instrumentando le classi della tua app con JaCoCo durante la creazione dell'app. A partire da AGP 9.6.0-alpha01, puoi utilizzare l'instrumentazione on-device, che instrumenta le classi della tua app sul dispositivo di test durante l'esecuzione dei test. Per saperne di più, consulta Visualizza i report sulla copertura del codice (con l'agente on-device).