繁体   English   中英

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

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

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

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

我在我的构建路径上有这些罐子: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 ):它给出了除了Eclipse编译错误,我需要编写新的PowerMockito模拟代码。 (我已经从之前现有的JUnit&Mockito [单独,没有PowerMockito]测试中获得了其他提到的ars,)

得到那个错误我能做错什么?

几乎帮助我弄清楚了)

非常简单的解决方案(我差不多开始):我错过了一些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 jar,所以我认为这套3让我在Eclipse中编写没有任何编译错误的PowerMock代码。 googlecode下载页面有一个zipm的powermockito jar + dependecies,但也有单独提供的powerockito jar。 这种情况让我很难意识到我错过了其他一些人,因为看起来我从那个角度看到了我所需要的一切(以为我已经拥有了我现有的JUnit和Mockito罐子所需的依赖关系)。

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

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

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

根据mvn rep的这个链接 ,PowerMock 1.5.5依赖于javassist 3.18.2-GA

一旦我们修好了......我们所有的嘲笑乐趣开始了!

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

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

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

以下用于Mockito和PowerMock组合。

powermock-的Mockito-的junit-1.6.3.jar

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM