CodeCoverage com EclEmma/Cobertura

Boa tarde pessoal,

Bom, não tenho experiencia com cobertura de código, entretanto esta passou a ser uma métrica interessante para o projeto que estou trabalhando, em fim, meu quadro é o a seguir:
Possuo um projeto web dividido em alguns módulos interdependetes, alguns módulos client-side e outros server-side… Este projeto é assistido por uma suit de testes unitários usando TestNG.
Desenvolvo usando Eclipse + Java + Maven, resumidamente tenho o seguinte esquema:

Projeto
->ServiceServer
->ServiceClient
Como disse, estou usando Eclipse, e existe o plugin de cobertura de código EclEmma, esta ferramenta é de longe o melhor referenciada na web, fiz algumas pesquisas, inclusive para mudar de solução e este sempre aparece como a melhor solução, mais completa, etc…
Para emular o servidor eu uso o Jetty.
Bom, o que acontece, o relatório final não me traz a cobertura do server-side… Eu fiz as seguintes tentativas:

  1. Simplesmente rodar o server com jetty:run
    Rodar os tests do lado client.
    Resultado: Cobertura total dos testes feitos do client-side.
  2. Rodar o servidor com jetty:start para ele não recompilar nada e só rodar usando o código designado.
    Rodar os tests do lado client.
    Resultado: Cobertura total dos testes feitos do client-side
  3. Instrumentação do projeto todo com o comando mvn emma:instrument -U (o -U para ainda forcar o updade dos pacotes já instrumentados)
    Substituição dos jars usados pelo Jetty pelos jars criados e instrumentados pelo emma.
    Rodar o servidor com jetty:run
    Rodar os tests do lado client.
    Resultado: Cobertura total dos testes feitos do client-side
  4. Instrumentação do projeto todo com o comando mvn emma:instrument -U (o -U para ainda forcar o updade dos pacotes já instrumentados)
    Substituição dos jars usados pelo Jetty pelos jars criados e instrumentados pelo emma.
    Rodar o servidor com jetty:start
    Rodar os tests do lado client.
    Resultado: Cobertura total dos testes feitos do client-side

    Nenhum resultado do lado do servidor… sempre 0% de cobertura… então decidi tentar fazer isso do lado do servidor de construção continua, o Jenkins…
    Existe um plugin “Cobertura” disponivel para o Jenkins, que é muito referenciado…
    O resultado é exatamente o mesmo que obtive usando o EclEmma pelo Eclipse…

Se alguem tiver alguma idéia e precisar de mais detalhes sobre os procedimentos feitos até aqui, é só dizer.

Alguem faz alguma ideia do que pode estar acontecendo de errado para o server-side não estar sendo coberto?

Att.

Boa tarde,

até onde meus conhecimentos vão o EclEmma só faz cobertura por projeto e você ainda pode escolher quais os pacotes vão participar da cobertura.

Pra ter certeza acho que devemos ver a documentação.

Talvez isso ajude:

http://www.eclemma.org/userdoc/sessions.html

Pois é, usando o plugin do Eclipse, e com o Jetty, ao rodar o Jetty e ainda digo:
jetty:start -Demma.rt.control.port=9999
Esse cara faz com que meu servidor, além de ter seu servico rodando na sua própria porta ainda tem uma porta pra vasão do listener do Emma… O resultado disso é que é escrito um arquivo “coverage.em” no ServiceServer.
Esse resultado simplismente não diz nada… :slight_smile:
Na verdade, tanto no ServiceServer quanto no ServiceClient este arquivo é escrito… Além disso, no projeto ServiceClient é escrito também o “coverage.ec”
Gerando o relatório com:
java -cp %USERPROFILE%/.m2/repository/emma/emma/2.0.5312/emma-2.0.5312.jar emma report -r xml,html -in %PATH_X%/coverage.ec -in %PATH_Y%/coverage.em
Ele também mostra a cobertura feita no ServiceClient corretamente, mas o ServiceServer zerado…
O mesmo acontece se eu observar só o resutlado do plugin no eclipse também…

Imaginei que pudesse inclusive ser algo relacionado a instancias diferentes da JVM… mas, acho que nao…