为什么我的基于Mockito的单元测试无法在Eclipse中运行?

时间:2010-12-07 21:26:07

标签: java eclipse unit-testing junit mockito

我有一个Maven管理的项目,在其单元测试中使用Mockito模拟。我可以在Maven构建中运行所有测试,并且它们运行时没有错误(并传递!)。但是,如果我右键单击一个测试函数,并选择“Run As - > JUnit Test”,我会得到异常java.lang.NoSuchMethodError: org.mockito.Mockito.doAnswer(Lorg/mockito/stubbing/Answer;)Lorg/mockito/stubbing/Stubber;。当然,如果我查看源代码就会出现“缺失”方法,就像我说测试从命令行编译和运行一样。

我能想到的最好是Eclipse是否试图通过为JUnit插件提供过时的Mockito工件(我在我的Maven依赖项中使用1.8.5)来帮助我,类似于Maven插件如何粘贴你可以使用Maven运行时的奇怪版本来完成某些任务。

这是问题吗?还有别的吗?我能解决这个问题吗?

ETA:显然这可能与known issue有关。它很可能源于我的类路径中有多个版本的Mockito(谢谢,Maven: - /)。我似乎把我的房子整理好了 - Eclipse现在可以运行测试了 - 但不幸的是这个bug已经咬了我的哈德森。我必须跟踪如何从类路径中删除旧的JAR。

2 个答案:

答案 0 :(得分:7)

确保单元测试类路径具有正确的mockito。您可以从运行对话框中进行检查。顺便说一下,Eclipse没有附带mockito,所以也许你有两个版本。查看您的maven依赖关系图并搜索重复项。

答案 1 :(得分:1)

我有类似的问题,我发现我有两个" mockito-all 1.8.x"和" mockito-core 1.9.5"在我的类路径中。我应该只使用1.9但不知何故eclipse在类路径中将1.9之前的1.8。我删除了1.8.x并且它有效;)