[英]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.