2008-09-11 21 views
3

J'écris un test unitaire pour vérifier qu'une méthode privée va fermer un flux.Pourquoi un appel de méthode est-il indiqué comme n'étant pas couvert lorsque le code de la méthode est couvert avec emma?

Le test unitaire appelle methodB et quelque chose variable est nulle

Le test unitaire ne moque pas de la classe sur le test

La méthode privée est dans une méthode publique que je fais appel.

L'utilisation emma dans Eclipse (via le plugin EclEmma) l'appel de méthode est affiché comme non couvert, même si le code dans la méthode est

par exemple

public methodA(){ 

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

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

Pourquoi l'appel de méthode ne serait pas mis en évidence comme étant couvert?

+0

Est-ce que méthodeB revient normalement? –

Répondre

0

Je suppose que lorsque vous dites 'les appels de test unitaires methodB()', vous ne voulez pas dire directement et via methodA().

Donc, est-ce possible methodB() est appelé ailleurs, par un autre test unitaire ou methodC() peut-être?

2

J'ai trouvé que le plugin eclipse pour EMMA est assez bogué, et a eu des expériences similaires à celle que vous décrivez. Mieux vaut utiliser EMMA seul (via ANT si nécessaire). Assurez-vous de toujours régénérer les fichiers de métadonnées générés par EMMA, afin d'éviter toute confusion (ce que je soupçonne être le problème avec le plugin eclipse).