Download - EMMA - Ferramenta para teste de cobertura
Ferramenta para teste de cobertura de código
EMMA é uma ferramenta para calcular a porcentagem de código acessado pelos testes.
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.
Página inicial do relatório. Aqui é possível visualizar um resumo do projeto(total de linhas, todos os pacotes e etc).
Na visão de um pacote é exibido todas as classes pertencentes aquele pacote e as porcentagens de cobertura(class, %; method, %; etc).
Visualização de uma classe. Aqui é possível analisar a cobertura dos métodos da classe.
Ainda na visualização da classe é possível analisar quais linhas especificamente estão sendo cobertas pelos testes.
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).
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.
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”.
<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>
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:
<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>
<forkMode>once</forkMode>
<reportFormat>xml</reportFormat>
</configuration>
</plugin>
</plugins>
</build>
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:
<reporting>
<plugins>
<!-- EMMA -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>emma-maven-plugin</artifactId>
<inherited>true</inherited>
</plugin>
</plugins>
</reporting>