PowerMock Mockito [PowerMockito] @PrepareForTest - > java.lang.NoClassDefFoundError:javassist / NotFoundException

时间:2014-04-18 15:31:45

标签: java junit mockito powermock javassist

我试图在现有的JUnit测试中使用我的第一个PowerMockito [PowerMock + Mockito]模拟。

我已经缩小了当我只是存在类级别注释@PrepareForTest(以及@RunWith(PowerMockRunner.class),而不是任何实际的模拟代码)时,我得到{{1如果我注释掉java.lang.NoClassDefFoundError: javassist/NotFoundException,还有任何实际的模拟代码来消除混杂变量,那么错误就不会发生;如果我只对@PrepareForTest进行联合评论,则会发生错误。因此,我认为这会将问题缩小到与尝试使用注释相关...

我的构建路径上有这些jar:junit-4.11.jaar,junit-addons-1.4.jar,mockito-all-1.9.5.jar,mockito-all-1.9.5-sources.jar,powermock-mockito -1.5.4-full.jar。

powermock-mockito-1.5.4-full.jar是我为试用PowerMockito而添加的唯一新版本(来自https://code.google.com/p/powermock/wiki/Downloads?tm=2):它为我提供了编写新的PowerMockito模拟代码所需的一切Eclipse编译错误。 (我已经从之前现有的JUnit& Mockito [单独,没有PowerMockito]测试中获得了其他提到的ars,

我有什么错误才能收到错误?

3 个答案:

答案 0 :(得分:9)

This几乎帮助我弄明白了)

非常简单的解决方案(我差不多开始):我缺少一些PowerMockito依赖jar (来自https://code.google.com/p/powermock/wiki/Downloads?tm=2):具体来说{cglib-nodep-2.2.2 .jar,javssist-3.18.1-GA.jar,objenesis-2.1.jar}。

这是一个简单的解决方案,有点愚蠢的错误,从第一位开始,因为powerMock googleCode下载页面包含所有这些:1,当我遇到问题时,我只下载并添加了powermock-mockito- 1.5.4-full.jar;我已经有了JUnit& Mockito jars,所以我认为这套3让我在Eclipse中编写没有任何编译错误的PowerMock代码。 googlecode下载页面有一个zipm的powermockito jar + dependecies,但也有单独提供的powerockito jar。这种情况让我很难意识到我错过了其他一些人,因为看起来我从这个角度看到了所有我需要的东西(以为我已经拥有了我现有的JUnit和Mockito罐子所需的依赖关系)。

实际上,具有依赖关系的zip具有解决问题所需的额外zip。我应该仔细检查第一,但没有意识到我做了相反的错误假设。

所以...答案是确保获取所有依赖项的zip [并将它们全部添加到您的构建路径] 。 最后有点明显和愚蠢,但是嘿,很多软件错误和问题最终都是这样:简单的错误假设或忽略的细节我们都没有意识到我们做了,因此需要一段时间才能意识到故障排除...

答案 1 :(得分:1)

我们使用的是一个使用PowerMock 1.5.5的ant junit目标。在我们的例子中,问题是javassist的错误版本是在ant junit任务类路径上。

PowerMock 1.5.5,根据mvn rep的this link,依赖于javassist 3.18.2-GA

一旦我们解决了这个......我们所有的嘲笑都开始了!

答案 2 :(得分:0)

我最近试图运行Mockito示例并且未能提供所有Jar文件。

此链接包含必要二进制文件的链接。

https://github.com/jayway/powermock/wiki/Downloads

以下用于Mockito和PowerMock组合。

powermock-的Mockito-的junit-1.6.3.jar

相关问题