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
- Plug-in do Android para Gradle 9.5.0-alpha05 ou mais recente
- Ativar a cobertura de código
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).