Ver relatórios de cobertura de código

O Plug-in do Android para Gradle pode criar relatórios de cobertura de código que monitoram a porcentagem do código coberta pelos testes. Nesta página, descrevemos como ativar os relatórios de cobertura e gerar relatórios.

É possível gerar relatórios de cobertura para cada tipo de teste (unidade e instrumentação) para cada variante. Também é possível gerar relatórios de cobertura unificados em diferentes tipos de teste, módulos e variantes de build.

Ativar cobertura de código

A cobertura de código precisa ser ativada definindo enableAndroidTestCoverage e enableUnitTestCoverage como true nos arquivos de build do módulo para cada variante de que você quer receber relatórios 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
        }
    }
}

Mudar a versão do Jacoco (opcional)

O AGP aplica o Jacoco automaticamente quando você ativa a cobertura nos seus módulos. No entanto, se você precisar usar uma versão específica do Jacoco, especifique-a no arquivo de build do módulo:

Kotlin

android {
    testCoverage {
        jacocoVersion = "JACOCO_VERSION"
    }
}

Groovy

android {
    testCoverage {
        jacocoVersion = 'JACOCO_VERSION'
    }
}

Gerar relatórios de cobertura específicos de variantes

Para gerar relatórios de cobertura apenas para testes de unidade ou apenas para testes de instrumentação de uma variante específica, execute as tarefas correspondentes.

Tipo de teste Comando Local do relatório
Testes de unidade ./gradlew :module-name:createVariantNameUnitTestCoverageReport path-to-your-project/module-name/build/reports/coverage/test/variant/index.html
Testes instrumentados ./gradlew :module-name:createVariantNameAndroidTestCoverageReport path-to-your-project/module-name/build/reports/coverage/androidTest/variant/connected/index.html

Gerar relatórios unificados de cobertura de código

É possível gerar relatórios unificados de cobertura de código usando as tarefas do Gradle testAllSuites e testAllSuitesWithDependencies. Essas tarefas vão gerar um único relatório HTML que consolida os dados de cobertura de diferentes tipos de teste (unidade e instrumentação), módulos e variantes de build. Isso fornece uma visão abrangente da cobertura de código do projeto em um único painel.

Pré-requisitos

Para gerar um relatório unificado, execute uma das seguintes tarefas na linha de comando:

Escopo da cobertura Comando Descrição Local do relatório
Módulo atual ./gradlew :module-name:testAllSuites --continue Testa todos os pacotes de testes e gera um relatório de cobertura unificado para o módulo atual, mesclando dados de todos os tipos de teste. path-to-your-project/module-name/build/reports/testAllSuites/coverage-report/
Módulo atual e dependências ./gradlew :module-name:testAllSuitesWithDependencies --continue Testa todos os pacotes de testes e gera um relatório de cobertura unificado para o módulo atual e todas as dependências dele. Essa tarefa está disponível para módulos de app e módulos de biblioteca com publicação ativada. path-to-your-project/module-name/build/reports/testAllSuitesWithDependencies/coverage-report/

A página de destino do relatório HTML gerado mostra um resumo de alto nível de todos os módulos. É possível detalhar do módulo para o pacote, do pacote para a classe e da classe para o arquivo de origem. Clique em qualquer arquivo para ver o código com destaque para a cobertura de linhas e ramificações:

  • Verde: linhas cobertas.
  • Vermelho: linhas não cobertas.
  • Amarelo: cobertura parcial (algumas instruções ou ramificações não foram cobertas).

Usar a cobertura de código no dispositivo para testes de instrumentação

Por padrão, o AGP mede a cobertura de testes de instrumentação instrumentando as classes do app com o JaCoCo ao criar o app. No AGP 9.6.0-alpha01, é possível usar a instrumentação no dispositivo, que instrumenta as classes do app no dispositivo de teste enquanto os testes são executados. Para mais informações, consulte Ver relatórios de cobertura de código (com agente no dispositivo).