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:
- Simplesmente rodar o server com jetty:run
Rodar os tests do lado client.
Resultado: Cobertura total dos testes feitos do client-side. - 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 - 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 - 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.
