mockito和eclipse的configuration问题。 给出错误:java.lang.verifyError

当我将我的mockito库添加到类path,并使用一个简单的mockito示例进行testing,我尝试通过使用模拟对象尝试返回错误的函数添加值,我得到java.lang.verifyerror。 以下是用于testing的代码,其次是logcat。

@Test public void testadd() { maincode obj2=mock(maincode.class); when(obj2.add(0, 0)).thenReturn(9); assertEquals(obj2.add(0, 0),9); } 

我得到以下错误。 请帮忙! 谢谢。

java.lang.VerifyError:org / mockito / cglib / core / ReflectUtils at org.mockito.cglib.core.KeyFactory $ Generator.generateClass(KeyFactory.java:167)at org.mockito.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy .java:25)org.mockito.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:217)at org.mockito.cglib.core.KeyFactory $ Generator.create(KeyFactory.java:145)at org.mockito。 cglib.core.KeyFactory.create(KeyFactory.java:117)位于org.mockito.cglib.core.KeyFactory.create(KeyFactory.java:109)位于org.mockito.cglib.core.KeyFactory.create(KeyFactory.java: 105)在org.mockito.internal.creation.jmock.ClassImposterizer.createProxyClass(ClassImposterizer.java:85)org.mockito.internal.creation。org.mockito.cglib.proxy.Enhancer。(Enhancer.java:70)。在org.mockito.internal.creation.jmock.ClassImposterizer.imposterise(ClassImposterizer.java:56)上的jmock.ClassImposterizer.imposterise(ClassImposterizer.java:62)at org.mockito.internal.creation.CglibMockMaker.createMock (CglibMockMaker.java:23)在org.mockito.internal.util.MockUtil.createMock(MockUtil.java:26)在org.mockito.internal.MockitoCore.mock(MockitoCore.java:51)在org.mockito.Mockito。模拟(Mockito.java:1243)在org.mockito.Mockito.mock(Mockito.java:1120)在testaddmock.testadd(testaddmock.java:24)在java.lang.reflect.Method.invokeNative(本地方法)在android .test.AndroidTestRunner.runTest(AndroidTestRunner.java:191)在android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176)在android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554)在android.app.Instrumentation $ InstrumentationThread.run(Instrumentation.java:1701)

Solutions Collecting From Web of "mockito和eclipse的configuration问题。 给出错误:java.lang.verifyError"

默认情况下,Mockito使用cglib来创builddynamic代理,但对于Android来说,这不起作用,因为cglib生成.class文件,而不是.dex。 但从1.9.5版本开始,Mockito提供了一个扩展点,允许replace代理生成引擎,所以你所需要的只是改变这个引擎,我认为Dexmaker是最好的变种。

所以为了使它工作,你应该添加dexmaker-mockito-1.0.jar到你的项目中,Mockito将使用它来生成他的代理。

@Grimmys 答案 (+1)对我有正确的答案。

在Android上运行时,为Dexmaker添加缺less的gradle导入是完全必需的

 androidTestCompile 'org.mockito:mockito-core:1.9.5' androidTestCompile 'com.google.dexmaker:dexmaker:1.1' androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.1' 

@Grimmy dexmaker-1.0.jar也是需要的。

@ user3054298我遇到了同样的问题,并按照这个博客的指导解决: http ://corner.squareup.com/2012/10/mockito-android.html

Mockito 1.9.5中的新function是支持Android的Dalvik运行时。 它使用DexMaker来即时生成模拟类。 要在设备或模拟器上使用Mockito,需要在testing项目的libs目录中添加三个.jar文件:mockito-all-1.9.5.jar,dexmaker-1.0.jar和dexmaker-mockito-1.0.jar 。

我被困在一个类似的错误3天! 添加dexmaker库根本没有帮助! 最后我把function模拟版本改成了最新的1.5.6版本,而且在那之后它工作的很好! 希望这可以帮助别人。