DEV Community

Cover image for [ptbr] Cobertura de código em testes integrados
daniel-augusto
daniel-augusto

Posted on • Updated on

[ptbr] Cobertura de código em testes integrados

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

main class

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

inclusão do agente

Passo 2. Executar os testes integrados

Comando para acionar fluxo de negócio

Passo 3. Encerrar a sessão de testes com o encerramento da aplicação (Neste caso, com o pressionamento de CTRL + C )

encerrando sessao

Passo 4. Gerar o relatório de cobertura do fluxo

gerando relatorio de cobertura

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.

cobertura - execucao 1

Top comments (0)