Motivação
Diferentemente de cobertura de código a partir de testes unitários comumente vista em diversos exemplos de uso do JaCoCo (Java Code Coverage), minha dúvida era como verificar a cobertura de código em testes integrados sem uso de mocks e stubs.
Aqui veremos como podemos gerar a cobertura de código presente nos testes integrados de uma aplicação Java SE Standalone que expõe um endpoint REST com 4 fluxos de negócio.
Isso é particularmente útil em uma aplicação legada que não possui testes automatizados, pois permite verificar os trechos de código que foram executados por uma bateria de testes manuais.
O código utilizado neste exemplo pode ser encontrado no github: https://github.com/daniel-augusto/coverage
Aplicação de exemplo
Esse código expõe um endpoint Rest que é acionado através da URL: http://localhost:4567/?name={value}
, onde o valor presente em value será utilizado para controle de fluxo da aplicação.
Obtendo a cobertura de código em um teste manual
Para obter a cobertura de código é necessário adicionar o javaagent
do JaCoCo à JVM que está executando a aplicação para que o código em execução possa ser analisado e as métricas de cobertura sejam geradas.
Passo 1. Iniciar a sessão de testes com a execução da aplicação com o javaagent
monitorando a execução
Passo 2. Executar os testes integrados
Passo 3. Encerrar a sessão de testes com o encerramento da aplicação (Neste caso, com o pressionamento de CTRL + C )
Passo 4. Gerar o relatório de cobertura do fluxo
Importante: Enquanto a sessão de testes não for encerrada (com o encerramento da aplicação), nem o arquivo
jacoco.exec
nem o relatório de cobertura são gerados.
Resultado
Perceba que o único trecho de código que foi exercitado pelo teste está destacado em verde, correspondendo ao cenário de teste executado no passo 2.
Top comments (0)