Bitrise CI — criando Workflow de testes unitários com cobertura de código
Neste artigo irei explicar como criar um Workflow, para fazer validações dos testes unitários e em seguida, iremos disponibilizar o resultado da cobertura de código, gerada a partir do Jacoco.
Relembrando, um Worflow é constituído pelo conjunto de blocos de códigos denominados Steps, que serão executados de maneira Top-Down após a build ser inicializada. Definimos nesta outra publicação o que é um Workflow e suas características.
O objetivo deste Workflow será:
- Validar os testes unitários, garantindo que novas mudanças no código não invalidem os testes previamente criados. E caso isto ocorra, o desenvolvedor terá que corrigi-los;
- Gerar um relatório contendo o resultado dos testes e sua cobertura de código. A métrica de cobertura de código, poderá ser considerada como um padrão de qualidade a ser seguido e que devemos estar sempre aumentando, para garantirmos que o código está sendo testado e validado.
Configuração do arquivo bitrise.yml
1. Autenticação e Clone do Repositório
Devemos definir o step "Activate SSH key" que é utilizado para autenticar a comunicação entre o Bitrise e o seu repositório no Git. Em seguida, devemos utilizar o step "Git Clone Repository", para clonar o repositório do projeto a ser testado.
2. Instalar componentes do SDK
Devemos definir o step "Install missing Android SDK components" para instalar dependências do SDK, que serão utilizadas pelo gradle.
3. Adicionar o passo de Teste Unitário
O step “Android Unit Test" pode ser substituído por tasks do gradle (testDebugUnitTest). Ele irá validar todos os testes unitários e disponibilizar os resultados no log da Build. Devemos configurar ele com a variante do projeto, neste caso, usaremos o Build Type de Debug.
4. Adicionando Jacoco (CodeCoverage)
Para obtermos a cobertura de código testado, é necessário configurar o plugin do Jacoco no projeto Android, para isso, iremos seguir este passo a passo. Ele irá gerar um relatório chamado: testDebugUnitTest.exec, que conterá todos os dados analisados baseado nas configurações do seu projeto.
5. Executando a Task do Jacoco pelo Graddle Runner
Mas, para realizar gerar este relatório, devemos executar a task do gradle que foi definida no projeto (jacocoTestReport). Para isso, teremos que utilizar o step "Gradle Runner", devemos alterar a task que irá ser inicializada por este step para a definida no projeto.
6. Deploy dos resultados no CI
Por último, devemos definir o step "Deploy to Bitrise.io — Apps, Logs, Artifacts", que será responsável por disponibilizar os relatórios gerados pelos testes. Recomendo ler as opções de customizações deste step, para não tornar seus relatórios públicos.
Por padrão, os relatórios html/xml do jacoco serão gerados no caminho: projeto/app/build/reports/tests/testDebugUnitTest, devemos definir esse caminho como o diretório de deploy. Para analisarmos através dos artefatos gerados pelo step.
No final o Workflow ficará assim: