2010-12-07 39 views
0

J'ai un projet géré par Maven qui utilise Mockito moqueur dans ses tests unitaires. Je peux exécuter tous les tests dans une build Maven, et ils courent sans erreur (et passent!). Toutefois, si je clique avec le bouton droit sur une seule fonction de test et que vous choisissez "Exécuter en tant que - JUnit Test", j'obtiens une exception java.lang.NoSuchMethodError: org.mockito.Mockito.doAnswer(Lorg/mockito/stubbing/Answer;)Lorg/mockito/stubbing/Stubber;. Bien sûr, la méthode "manquante" est là si je regarde les sources, et comme je l'ai dit, les tests compilent et exécutent à partir de la ligne de commande. Le meilleur que je puisse penser est si Eclipse essaye de "m'aider" en fournissant un artefact de Mockito démodé (j'utilise 1.8.5 dans mes dépendances de Maven) pour le plugin de JUnit, semblable à comment le plugin de Maven peut vous coller avec une version bizarre de l'exécution de Maven pour certaines tâches.Pourquoi mon test d'unité basé sur Mockito ne peut-il pas être exécuté dans Eclipse?

Est-ce le problème? Est-ce autre chose? Puis-je résoudre ce problème? ETA: Apparemment, cela peut se rapporter à known issue. Il y a de fortes chances que cela provienne d'avoir plusieurs versions de Mockito dans mon classpath (merci, Maven: - /). J'ai l'impression que ma maison est en ordre - Eclipse peut faire les tests maintenant - mais malheureusement, le virus a mordu mon Hudson. Je dois trouver comment enlever le vieux JAR du classpath là aussi.

Répondre

6

Assurez-vous que le chemin de classe de test unitaire a le bon mockito. Vous pouvez vérifier cela à partir de la boîte de dialogue d'exécution. Btw, Eclipse n'est pas livré avec mockito, donc peut-être vous avez deux versions de celui-ci. Jetez un oeil à votre graphique de dépendance maven et recherchez des doublons.

+1

Joli appel sur les multiples versions; J'ai été brûlé par cela assez souvent, je ne sais pas pourquoi ce n'est pas l'une des premières choses que je vérifie. Je reconstruis maintenant acceptera si cela le fixe: D – Coderer

+0

Cela a fonctionné pour moi. Merci! – krodmannix

+1

J'ai eu ce même problème après l'installation de poweremock, et c'est l'extension mockito. powermock-api-mockito-1.6.4 est livré avec mockito-1.10.19, et j'avais mockito-all-1.9.5 dans mes dépendances pom. La mise à jour du pom pour refléter la version incluse de powermock a résolu ce problème. –

1

J'ai eu le même problème et j'ai trouvé que j'avais "mockito-all 1.8.x" et "mockito-core 1.9.5" dans mon classpath. Je devais utiliser seulement 1.9 mais d'une certaine façon, éclipse mettait 1.8 avant 1.9.5 dans le classpath. J'ai enlevé 1.8.x et cela a fonctionné;)