AFAIK eclEmma, così come molti altri sistemi di copertura, modificare i file .class per aggiungere istruzioni sulla copertura. Molti di questi strumenti lo fanno in "tempo di compilazione", non in fase di esecuzione.
PowerMock invece, così come AspectJ LTW e molti altri sistemi, manipolare lo stesso bytecode ma al "tempo di esecuzione":
PowerMock è un framework che si estendono altre librerie finte come EasyMock con funzionalità più potenti . PowerMock utilizza una manipolazione personalizzata del classloader e del codice byte per abilitare il mocking di metodi statici, costruttori, classi e metodi finali, metodi privati, rimozione di inizializzatori statici e altro.
Ho un problema simile con entrambi eclEmma (varie versioni) e Cobertura in combinazione con AspectJ LTW, causa quando la modifica di esecuzione di file .class accadere, si corrompe in qualche modo la modifica fatto in precedenza dallo strumento di copertura.
Non ho ancora trovato una soluzione, ma almeno ho trovato il sintomo.
La soluzione giusta sarebbe quella di eseguire il debug di strumentazione PowerMock e scoprire dove e come si interrompe gli strumenti di copertura. E 'piuttosto un problema, per uno strumento di test, per rompere gli strumenti di copertura, in quanto i due sono molto spesso utilizzati insieme :)
fonte
2012-07-24 03:29:11
Potrebbe fornire ulteriori dettagli come la versione di Mockito, PowerMock ed EclEmma? – Brice
Ehi, sto utilizzando la versione 2.1.0 di eclEmma, è un bug in quella versione, in eclEmma 1.5.x visualizza bene la copertura test. – LottaLava
OK, sembra che _EclEmma_ non usi più _Emma_ dalla versione 2.x. Stanno usando il proprio strumento di copertura che si chiama JaCoCo. Come io non conosco la versione PowerMock che si sta utilizzando, si dovrebbe cercare PowerMock 1.4.11 che include alcune correzioni relative alla JaCoCo: http://powermock.googlecode.com/svn/trunk/changelog.txt – Brice