我已经缩小了当我只是存在类级别注释@PrepareForTest(以及@RunWith(PowerMockRunner.class),而不是任何实际的模拟代码)时,我得到java.lang.NoClassDefFoundError:javassist / NotFoundException :如果我注释掉@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开始):它为我提供了编写新的PowerMockito模拟代码所需的一切,而没有Eclipse编译错误. (我已经从之前现有的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 jars,所以我认为这套3让我在Eclipse中编写没有任何编译错误的PowerMock代码. googlecode下载页面有一个zip的powermockito jar dependecies,但也说单独提供powerockito jar.这种情况让我很难意识到我错过了其他一些人,因为看起来我从那个角度看到了我所需要的一切(以为我已经拥有了我现有的JUnit和Mockito罐子所需的依赖关系).
实际上,具有依赖性的zip具有解决问题所需的额外zip.我应该仔细检查第一,但没有意识到我做了相反的错误假设.
所以…答案是确保获得所有依赖项的zip [并将它们全部添加到您的构建路径].最后我有点明显而且愚蠢,但是,嘿,很多软件错误和问题最终都是:简单的错误假设或我们没有意识到的忽略的细节,因此在故障排除时需要花费一些时间来实现. ..