2008-09-11 9 views
3

Ich schreibe einen Komponententest, um zu prüfen, ob eine private Methode einen Stream schließt.Warum wird ein Methodenaufruf als nicht abgedeckt angezeigt, wenn der Code in der Methode mit emma abgedeckt ist?

Der Unit-Test ruft methodeB und die Variable etwas ist null

Der Unit-Test nicht die Klasse nicht spottet Test

Die private Methode ist in einem öffentlichen Verfahren, das ich nennen werde.

emma in Eclipse (über das eclemma Plugin), um die Call-Methode wird als nicht einmal abgedeckt angezeigt werden, obwohl der Code innerhalb der Methode

zB ist

public methodA(){ 

    if (something==null) { 
     methodB(); //Not displayed as covered 
    } 
} 

private methodB(){ 
    lineCoveredByTest; //displayed as covered 
} 

Warum der Aufruf der Methode wäre nicht hervorgehoben als abgedeckt?

+0

Führt Methode B normal zurück? –

Antwort

0

Ich nehme an, wenn Sie sagen, die Unit Test Anrufe methodB() ', meinen Sie nicht direkt und über methodA().

Also, ist es möglich, methodB() wird an anderer Stelle aufgerufen, durch eine andere Einheit Test oder methodC() vielleicht?

2

Ich habe festgestellt, dass das Eclipse-Plugin für EMMA ziemlich fehlerhaft ist und ähnliche Erfahrungen gemacht hat wie die, die Sie beschreiben. Besser, EMMA allein zu benutzen (über ANT wenn erforderlich). Stellen Sie sicher, dass Sie die von EMMA erzeugten Metadatendateien immer neu generieren, um Verwirrungen zu vermeiden (was vermutlich das Problem mit dem Eclipse-Plugin ist).