Archive

Posts Tagged ‘emma’

Cobertura de testes unitários com Emma

Os testes unitários facilitam a integração continua em uma aplicação! Isso muitos já sabem, mas o que talvez possa estar passando a despercebido em algumas empresas hoje, é a eficiência destes testes unitários, que reflete diretamente na qualidade da aplicação.

Na tentativa de melhorar a qualidade de testes unitários percebi que não bastava apenas visualmente verificar classe por classe, sua utilização e tentar cobrir o máximo de possibilidades, verifiquei que isso seria impossível ser alcançado utilizando apenas o bom senso. Principalmente quando são projetos muito grandes com muitas pessoas desenvolvendo testes e artefatos do software.

Um boa prática para os projetos foi implantada recentemente em um dos projetos que eu trabalho, a ferramenta Emma, bem como outras ferramentas como por exemplo: Cobertura e CodeCover, que tem como objetivo gerar relatórios sobre o código que está sendo utilizado no momento de execução dos testes unitários. Com isso eu pude verificar com exatidão quais classes, métodos, blocos e linhas do meu código não estão sendo utilizados pelos testes. Permitindo então construir novos testes para essa parte da aplicação que até então não está sendo testada, mas deveria.

A ferramenta Emma que foi implantada em um sistema EJB 2.0 e foi publicada no Jboss 3.2.7, é muito fácil de utilizar, vou descrever abaixo os passos para gerar um relatório.

Copie o arquivo “emma.jar” quem vem dentro “emma-*****-lib.zip”, é pode ser baixado no site http://emma.sourceforge.net/, para dentro do diretório do Servidor da Aplicação, no meu caso “/java/jboss-3.2.7/server/default/lib”.

É necessário gerar a versão da sua aplicação publicada com as classes instrumentadas, o que significa que suas classes originais serão modificadas para que possa ser possível o Emma verificar o que do código está sendo utilizado. Para gerara as classes instrumentadas utilize o comando “java –cp emma.jar emma instr -d output -ip ****.jar” com isso será gerado o arquivo “coverage.em” e a nova versão instrumentada do “****.jar”. Agora basta substituir o JAR publicado no seu Servidor de Aplicação por esse novo que foi instrumentado e iniciar o servidor.


Rode os testes normalmente e ao terminar desligue o Servidor de Aplicação. Com isso o Emma utilizando suas classes instrumentadas já gerou o arquivo de onde se origina o relatório no diretório aonde está sendo executado o Servidor, no meu caso “C:\java\jboss-3.2.7\bin\ coverage.ec”.
 Para concluir e gerar o relatório basta rodar o comando: 
C:\java\jboss-3.2.7\bin>java -cp emma.jar emma report -r html -in coverage.em -in C:\java\jboss-3.2.7\bin\coverage.ec, lembrando que o arquivo que foi gerado no momento da instrumentação “coverage.em”, deve estar no mesmo diretório que o “coverage.ec” ou descrever o caminho para esse arquivo. O relatório será gerado em “coverage\index.html”, existem ainda a possibilidade de gerar esse relatório em Plain Text ou XML.


Uma outra forma de utilização do Emma é executar a instrumentação e processamento do relatório através do Ant, abaixo segue o exemplo de instrumentação:

<emma>
   <instr destdir=“${emma.bin.dir}” mode=“fullcopy” merge=“false” metadatafile=“${emma.metadado.dir}/coverage.em” instrpath=“${bin.dir}”/>
</emma>

É isso, espero ter ajudado!

Categorias:java Tags:, , ,