2010-12-07 55 views
0

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

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

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

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

回答

6

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

+1

良好的呼吁多个版本;我被这个经常烧毁了,我不知道为什么它不是我检查的第一件事情。我现在正在重建;将接受如果这修复它:D – Coderer 2010-12-16 23:26:05

1

我有类似的问题,我发现我的类路径中都有“mockito-all 1.8.x”和“mockito-core 1.9.5”。我本应该只使用1.9,但不知怎的,日食在1.9.5之前将1.8放在classpath中。我删除了1.8.x和它的工作;)

相关问题