AFAIK eclEmma, así como muchos otros sistemas de cobertura, modifican sus archivos .class para agregar instrucciones de cobertura. La mayoría de estas herramientas lo hacen en "tiempo de compilación", no en tiempo de ejecución.
PowerMock lugar, así como AspectJ LTW y muchos otros sistemas, manipulan el mismo código de bytes, pero al "tiempo de ejecución":
PowerMock es un marco que se extienden a otras bibliotecas simulacros como EasyMock con capacidades más potentes . PowerMock utiliza un cargador de clases personalizado y manipulación de códigos de bytes para permitir la burla de métodos estáticos, constructores, clases y métodos finales, métodos privados, eliminación de inicializadores estáticos y más.
Tengo un problema similar con ambas EclEmma (varias versiones) y Cobertura en combinación con AspectJ LTW, porque cuando la modificación en tiempo de ejecución de los archivos .class suceda, de alguna manera corrompe la modificación realizada previamente por la herramienta de cobertura.
No he encontrado una solución, pero al menos encontré el síntoma.
La solución correcta sería depurar la instrumentación de PowerMock y descubrir dónde y cómo rompe las herramientas de cobertura. Es un gran problema, para una herramienta de prueba, para romper las herramientas de cobertura, ya que los dos están muy a menudo usan juntos :)
¿Podría dar más detalles como la versión de Mockito, PowerMock y EclEmma? – Brice
Hola, estoy usando la versión 2.1.0 de eclEmma, es un error en esa versión, en eclEmma 1.5.x muestra bien la cobertura de las pruebas. – LottaLava
OK, parece que _EclEmma_ ya no usa _Emma_ desde la versión 2.x. Están usando su propia herramienta de cobertura que se llama JaCoCo. Como no conozco la versión de PowerMock que está utilizando, debe probar PowerMock 1.4.11 que incluye algunas correcciones relacionadas con JaCoCo: http://powermock.googlecode.com/svn/trunk/changelog.txt – Brice