Visualizzare i report sulla copertura del codice

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

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).