emma - ferramenta para teste de cobertura
DESCRIPTION
Apresentação sobre a ferramenta de teste de cobertura: EMMA e sua integração com o Maven.TRANSCRIPT
![Page 1: EMMA - Ferramenta para teste de cobertura](https://reader030.vdocuments.com.br/reader030/viewer/2022020207/55939e281a28abef7f8b4671/html5/thumbnails/1.jpg)
Ferramenta para teste de cobertura de código
![Page 2: EMMA - Ferramenta para teste de cobertura](https://reader030.vdocuments.com.br/reader030/viewer/2022020207/55939e281a28abef7f8b4671/html5/thumbnails/2.jpg)
EMMA é uma ferramenta para calcular a porcentagem de código acessado pelos testes.
![Page 3: EMMA - Ferramenta para teste de cobertura](https://reader030.vdocuments.com.br/reader030/viewer/2022020207/55939e281a28abef7f8b4671/html5/thumbnails/3.jpg)
Ela oferece a visão da cobertura alcançada pelos testes por classes, métodos, blocos e linhas.
Semelhante ao Cobertura, o EMMA exibe o código da classe testada e especificamente se a linha está sendo abrangida ou não pelos testes.
O EMMA possibilita gerar relatórios em HTML, XML ou arquivo txt.
![Page 4: EMMA - Ferramenta para teste de cobertura](https://reader030.vdocuments.com.br/reader030/viewer/2022020207/55939e281a28abef7f8b4671/html5/thumbnails/4.jpg)
Página inicial do relatório. Aqui é possível visualizar um resumo do projeto(total de linhas, todos os pacotes e etc).
![Page 5: EMMA - Ferramenta para teste de cobertura](https://reader030.vdocuments.com.br/reader030/viewer/2022020207/55939e281a28abef7f8b4671/html5/thumbnails/5.jpg)
Na visão de um pacote é exibido todas as classes pertencentes aquele pacote e as porcentagens de cobertura(class, %; method, %; etc).
![Page 6: EMMA - Ferramenta para teste de cobertura](https://reader030.vdocuments.com.br/reader030/viewer/2022020207/55939e281a28abef7f8b4671/html5/thumbnails/6.jpg)
Visualização de uma classe. Aqui é possível analisar a cobertura dos métodos da classe.
![Page 7: EMMA - Ferramenta para teste de cobertura](https://reader030.vdocuments.com.br/reader030/viewer/2022020207/55939e281a28abef7f8b4671/html5/thumbnails/7.jpg)
Ainda na visualização da classe é possível analisar quais linhas especificamente estão sendo cobertas pelos testes.
![Page 8: EMMA - Ferramenta para teste de cobertura](https://reader030.vdocuments.com.br/reader030/viewer/2022020207/55939e281a28abef7f8b4671/html5/thumbnails/8.jpg)
Para integrar o EMMA com o Maven é necessário configurar o “pom.xml” do projeto onde está localizado as classes de testes unitários ou do projeto pai.
Por default o relatório do EMMA é gerado na fase de “test” do ciclo de vida de construção “site” do Maven(Build Lifecycle). (mvn site-deploy).
![Page 9: EMMA - Ferramenta para teste de cobertura](https://reader030.vdocuments.com.br/reader030/viewer/2022020207/55939e281a28abef7f8b4671/html5/thumbnails/9.jpg)
Entretanto, vale lembrar que antes de executar o EMMA é invocado a fase de “test”. Isso garante que o “instrument”, ou seja, as classes compiladas que servirão de base para teste sejam geradas antes do relatório propriamente dito.
É possível gerar o relatório do EMMA pelo comando: mvn emma:emma.
![Page 10: EMMA - Ferramenta para teste de cobertura](https://reader030.vdocuments.com.br/reader030/viewer/2022020207/55939e281a28abef7f8b4671/html5/thumbnails/10.jpg)
A configuração do EMMA na tag “build” permite, assim como Cobertura, redefinir as fases do ciclo de vida de construção do Maven acrescentando “goals” do EMMA.
No exemplo a seguir o EMMA informa que na fase “process-classes" será executado seu “goal” “instrument”.
![Page 11: EMMA - Ferramenta para teste de cobertura](https://reader030.vdocuments.com.br/reader030/viewer/2022020207/55939e281a28abef7f8b4671/html5/thumbnails/11.jpg)
<build><plugins>
<!-- Emma --><plugin>
<groupId>org.codehaus.mojo</groupId><artifactId>emma-maven-plugin</artifactId><inherited>true</inherited><executions>
<execution><phase>process-classes</phase><goals>
<goal>instrument</goal></goals>
</execution></executions>
</plugin></plugins>
</build>
![Page 12: EMMA - Ferramenta para teste de cobertura](https://reader030.vdocuments.com.br/reader030/viewer/2022020207/55939e281a28abef7f8b4671/html5/thumbnails/12.jpg)
Para que sejam definidas quais classes serão contempladas no relatório é necessário configurar outro plugin: Surefire.
O Surefire irá disparar os testes e criar a base “instrument” para que seja construído o relatório EMMA.
Exemplo:
![Page 13: EMMA - Ferramenta para teste de cobertura](https://reader030.vdocuments.com.br/reader030/viewer/2022020207/55939e281a28abef7f8b4671/html5/thumbnails/13.jpg)
<build><plugins>
<!-- Surefire --><plugin>
<groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.5</version><inherited>true</inherited><configuration>
<excludes><exclude>br/com/senac/turma5/dao/**/*DAO.class</exclude><exclude>br/com/senac/turma5/exceptions/*.class</exclude><exclude>br/com/senac/turma5/springmvc/*.class</exclude><exclude>br/com/senac/turma5/util/*.class</exclude
</excludes>
![Page 14: EMMA - Ferramenta para teste de cobertura](https://reader030.vdocuments.com.br/reader030/viewer/2022020207/55939e281a28abef7f8b4671/html5/thumbnails/14.jpg)
<forkMode>once</forkMode>
<reportFormat>xml</reportFormat>
</configuration>
</plugin>
</plugins>
</build>
![Page 15: EMMA - Ferramenta para teste de cobertura](https://reader030.vdocuments.com.br/reader030/viewer/2022020207/55939e281a28abef7f8b4671/html5/thumbnails/15.jpg)
O relatório HTML gerado pelo plugindo EMMA pode ser incluído nos relatórios exibidos do “site” do projeto.
Para isso é necessário somente mencionar o plugin na tag “reporting” do seu pom.xml
Exemplo:
![Page 16: EMMA - Ferramenta para teste de cobertura](https://reader030.vdocuments.com.br/reader030/viewer/2022020207/55939e281a28abef7f8b4671/html5/thumbnails/16.jpg)
<reporting>
<plugins>
<!-- EMMA -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>emma-maven-plugin</artifactId>
<inherited>true</inherited>
</plugin>
</plugins>
</reporting>
![Page 17: EMMA - Ferramenta para teste de cobertura](https://reader030.vdocuments.com.br/reader030/viewer/2022020207/55939e281a28abef7f8b4671/html5/thumbnails/17.jpg)