Cómo ver informes de cobertura de código

El complemento de Android para Gradle puede crear informes de cobertura de código que registran el porcentaje de tu código que abarcan las pruebas. En esta página, se describe cómo habilitar los informes de cobertura y generarlos.

Puedes generar informes de cobertura para cada tipo de prueba (unitaria y de instrumentación) de cada variante. También puedes generar informes de cobertura unificados en diferentes tipos de pruebas, módulos y variantes de compilación.

Habilita la cobertura de código

La cobertura de código se debe habilitar configurando enableAndroidTestCoverage y enableUnitTestCoverage como true en los archivos de compilación de nivel de módulo para cada variante de la que quieras obtener informes de cobertura:

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

Cambia la versión de Jacoco (opcional)

El AGP aplica Jacoco automáticamente cuando habilitas la cobertura en tus módulos. Sin embargo, si necesitas usar una versión específica de Jacoco, puedes indicarla en tu archivo de compilación de nivel de módulo:

Kotlin

android {
    testCoverage {
        jacocoVersion = "JACOCO_VERSION"
    }
}

Groovy

android {
    testCoverage {
        jacocoVersion = 'JACOCO_VERSION'
    }
}

Genera informes de cobertura específicos de variantes

Para generar informes de cobertura solo para pruebas unitarias o solo para pruebas de instrumentación de una variante específica, ejecuta las tareas correspondientes.

Tipo de prueba Comando Ubicación desde la que se informó
Pruebas de unidades ./gradlew :module-name:createVariantNameUnitTestCoverageReport path-to-your-project/module-name/build/reports/coverage/test/variant/index.html
Pruebas instrumentadas ./gradlew :module-name:createVariantNameAndroidTestCoverageReport path-to-your-project/module-name/build/reports/coverage/androidTest/variant/connected/index.html

Genera informes de cobertura de código unificados

Puedes generar informes de cobertura de código unificados con las tareas de Gradle testAllSuites y testAllSuitesWithDependencies. Estas tareas generarán un solo informe HTML que consolidará los datos de cobertura de diferentes tipos de pruebas (unitaria y de instrumentación), módulos y variantes de compilación. Esto proporciona una vista integral de la cobertura de código de tu proyecto en un solo panel.

Requisitos previos

Para generar un informe unificado, ejecuta una de las siguientes tareas desde la línea de comandos:

Alcance de la cobertura Comando Descripción Ubicación desde la que se informó
Módulo actual ./gradlew :module-name:testAllSuites --continue Prueba todos los paquetes de pruebas y genera un informe de cobertura unificado para el módulo actual, en el que se combinan los datos de todos los tipos de pruebas. path-to-your-project/module-name/build/reports/testAllSuites/coverage-report/
Módulo actual y dependencias ./gradlew :module-name:testAllSuitesWithDependencies --continue Prueba todos los paquetes de pruebas y genera un informe de cobertura unificado para el módulo actual y todas sus dependencias. Esta tarea está disponible para los módulos de la app y los módulos de biblioteca con la publicación habilitada. path-to-your-project/module-name/build/reports/testAllSuitesWithDependencies/coverage-report/

La página de destino del informe HTML generado muestra un resumen general de todos los módulos. Puedes desglosar desde el módulo hasta el paquete, desde el paquete hasta la clase y desde la clase hasta el archivo de origen. Haz clic en cualquier archivo para ver el código con el resaltado de la cobertura de líneas y ramas:

  • Verde: Líneas cubiertas
  • Rojo: Líneas no cubiertas
  • Amarillo: Cobertura parcial (faltan algunas instrucciones o ramas).

Usa la cobertura de código integrada en el dispositivo para las pruebas de instrumentación

De forma predeterminada, AGP mide la cobertura de las pruebas de instrumentación instrumentando las clases de tu app con JaCoCo cuando compila la app. A partir de AGP 9.6.0-alpha01, puedes usar la instrumentación integrada en el dispositivo, que instrumenta las clases de tu app en el dispositivo de prueba mientras se ejecutan las pruebas. Para obtener más información, consulta Visualiza informes de cobertura de código (con el agente integrado en el dispositivo).