2 Cobertura Testes Jacoco
2 Cobertura Testes Jacoco
2 Cobertura Testes Jacoco
Java + JaCoCo
Prof. Dr. Fábio Aiub Sperotto
fabio.sperotto@ifsc.edu.br
Cobertura de Código (code coverage)
●
A cobertura de testes é uma métrica que define o número de
testes que precisamos escrever para um dado programa.
●
A ideia hoje é que tenhamos um relatório e uma indicação
visual onde:
2
JaCoCo + Java + Apache NetBeans
●
EclEmma é uma ferramenta de cobertura de código feita
originalmente para a IDE Eclipse.
●
JaCoCo pode ser integrado com o Apache Netbeans por meio
de plugin no Maven. Para Apache NetBeans versão 16 (ou
próxima) use o JaCoCo 0.8.8.
●
Após fazer a configuração correta por meio do pom.xml, toda
vez que executar os testes unitários (por si só ou na build) um
relatório em HTML será gerado no diretório do projeto,
exemplo:
NetBeansProjects/projeto/target/site/jacoco/...projeto/index.html
3
JaCoCo
●
Exemplo de code coverage report no próprio projeto que
implementa o plugin:
https://www.jacoco.org/jacoco/trunk/coverage/
4
Configuração
●
Adicione no pom.xml da sua aplicação Maven (para ctrl + c use o slide seguinte):
<build> Build da aplicação
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.8</version> Versão funcional
<executions>
<execution>
<goals> Objetivo do maven
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>generate-code-coverage-report</id>
<phase>test</phase> Gerar relatório nos testes
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
5
Configuração (para copiar)
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.8</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>generate-code-coverage-report</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
6
Execução
●
Depois do pom.xml pronto, clique com o botão direito no projeto
e Clean and Build.
●
Em seguida, clicando com botão direito novamente no projeto,
teremos a opção de Code Coverage. É possível exibir
integrado no NetBeans o relatório:
7
Execução
●
Resultados:
8
Execução
●
Resultados:
9
Discussões
●
Qual o percentual ideal de cobertura a ser alcançado?
●
É sempre importante e pragmático ter a métrica numérica como objetivo? E
métodos triviais como getters/setters?
●
Para sistemas de missão não crítica:
●
As vezes as funcionalidades estão testadas mas nem todas as exceções da
aplicação foram cobertas de testes, então dificilmente poderá chegar aos
100% quando dificilmente alguma operação percorra caminhos não
conhecidos do sistema.
10
Referências
●
Marco Tulio Valente. Engenharia de Software Moderna: Princípios e
Práticas para Desenvolvimento de Software com Produtividade, Editora:
Independente, 395 páginas, 2020.
●
Java Code Coverage for Eclipse: https://www.jacoco.org/
●
Barua, B. K. Test Coverage Definition – Test Unit. Microsoft Lear Center.
Disponível em
https://learn.microsoft.com/en-us/answers/questions/778016/test-covera
ge-definition-unit-testing
Acesso em 27/2/2023.
●
What is a reasonable code coverage % for unit testes?
https://stackoverflow.com/questions/90002/what-is-a-reasonable-code-co
verage-for-unit-tests-and-why
●
Konik, J. Who Cares About Code Coverage and Why? Codecov.
Disponível em
https://about.codecov.io/blog/who-cares-about-code-coverage-and-why/
Acesso em 27/2/2023.
11