Existem diversas ferramentas que ajudam nesta tarefa,
fazendo a análise da cobertura de testes de um projeto Java e gerando um relatório. Pesquisando sobre essas ferramentas encontrei o EclEmma, um
plugin gratuito de cobertura de código Java para Eclipse. Ele traz a análise de
cobertura de código diretamente na bancada Eclipse e permite saber quantos por
cento (%) de nossos testes de fato estão cobertos...
Para instalar o EclEmma no Eclipe basta ir no Eclipse Marketplace e procurá-lo.
Figura 1. Caminho Eclipse Marketplace
Figura 2. Procurando o plugin EclEmma no Eclipse Marketplace
Após instalar o EclEmma, o Eclipe deverá ser reiniciado, para isto basta confirmar a caixa de diálogo.
Figura 3. Caixa de diálogo para restartar o Eclipse
Figura 4. Botão Coverage
Agora que já temos o EclEmma instalado devidamente, vamos colocar a mão na massa.
Criei um programinha super básico: o usuário informa um número de 1 a 7 e então o programa exibe o nome do dia da semana correspondente, caso o usuário informe um número fora deste intervalo o programa exibe uma mensagem de erro.
Iniciamos escrevendo a classe DiaSemana, nela está contido o método nomeDia no qual vamos testar.
Figura 5. Implementação Classe DiaSemana
Implementei uma classe denominada Main, para que o nosso programa funcione corretamente
Figura 6. Implementação Classe Main
Por fim, nossa classe de teste. Iniciei com um único teste, garantindo que o método nomeDia estivesse funcionando perfeitamente.
Após rodar o JUnit percebemos pela barra verde que tudo está funcionando.
Figura 7. Implementação Classe DiaSemanaTest e resultado do JUnit
Com apenas este teste que fizemos será que conseguimos cobrir todas as linhas de código da nossa classe DiaSemana? Essa é a hora de descobrir. Para rodar os testes com o EclEmma basta clicarmos com o botão direito em cima do pacote de teste, ir em Coverage As → JUnit Test. Ou simplesmente clicar no botão Coverage que já foi mencionado no inicio do tutorial.
Figura 8. Caminho para rodar os teste com EclEmma
Se formos na classe DiaSemana percebemos que nem todas as linhas foram cobertas pelo teste. O plugin EclEmma colori as linhas para facilitar a visualização da cobertura do código, assim podemos saber de forma prática o que nossos testes estão cobrindo e onde nos esquecemos de testar.
As linhas cobertas pelos testes ficam verdes, aquelas em que os testes não cobriram ficam vermelhas e as parcialmente cobertas adquirem a cor amarela. Nesta ultima situação, geralmente as linhas possuem laços condicionais, if ou while, por exemplo. Significa que depois de rodar o teste, todas suas condições não foram realizadas.
Figura 9. Cobertura de código da classe DiaSemana
Vamos começar pelas linhas em vermelho, temos que implementar um teste para que está linha seja coberta. Precisamos então realizar um teste que simule uma entrada inválida.
Figura 10. Implementação do segundo teste
Se rodarmos o EclEmma novamente vamos perceber que as linhas que estavam em vermelho agora já estão verdes, isso significa que nosso método de teste atingiu o que esperávamos. Agora e a linha em amarelo? Neste trecho do código temos um if e nem todas as suas condições foram testadas. No teste feito anteriormente atribuímos o valor 0 a variável dia, isto satisfaz a expressão "dia < 1", mas e a expressão "dia > DIAS_NA_SEMANA" ? Este trecho do código não foi testado, por isso a coloração amarela. Devemos então criar um novo teste que satisfaça essa condição.
Figura 11. Nova cobertura de código da classe DiaSemana
Figura 12. Implementação do terceiro teste
Pronto! Agora nossa classe está totalmente coberta.
Figura 13. Cobertura final de código da classe DiaSemana
Na aba Coverage é apresentado a porcentagem de linhas cobertas, o número de linhas (instruções / código) cobertas, o número de linhas que não foram cobertas pelos teste e por ultimo o total de linhas de código.
Figura 14. Porcentagem da cobertura de código
No site oficial do EclEmma há todas informações sobre o plugin, alguns tutoriais básicos e com imagens ilustrativas. Enfim, não tem erro para começar a usar.
Espero que tenham gostado de mais este tutorial. Até o próximo..

Nenhum comentário:
Postar um comentário