gpt4 book ai didi

java - 使用 eclipse 配置 mockito 时出现问题。给出错误 : java. lang.verifyError

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:50:51 25 4
gpt4 key购买 nike

当我将我的 mockito 库添加到类路径,并使用一个简单的 mockito 示例进行测试时,我尝试使用模拟对象为添加的函数返回错误值,我得到 java.lang.verifyerror。以下是用于测试的代码,后面是 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) at 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) at org.mockito.cglib.core.KeyFactory.create(KeyFactory.java:109) at org.mockito.cglib.core.KeyFactory.create(KeyFactory.java:105) at org.mockito.cglib.proxy.Enhancer.(Enhancer.java:70) at org.mockito.internal.creation.jmock.ClassImposterizer.createProxyClass(ClassImposterizer.java:85) at org.mockito.internal.creation.jmock.ClassImposterizer.imposterise(ClassImposterizer.java:62) at org.mockito.internal.creation.jmock.ClassImposterizer.imposterise(ClassImposterizer.java:56) at org.mockito.internal.creation.CglibMockMaker.createMock(CglibMockMaker.java:23) at org.mockito.internal.util.MockUtil.createMock(MockUtil.java:26) at org.mockito.internal.MockitoCore.mock(MockitoCore.java:51) at org.mockito.Mockito.mock(Mockito.java:1243) at org.mockito.Mockito.mock(Mockito.java:1120) at testaddmock.testadd(testaddmock.java:24) at java.lang.reflect.Method.invokeNative(Native Method) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176) at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1701)

最佳答案

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

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

关于java - 使用 eclipse 配置 mockito 时出现问题。给出错误 : java. lang.verifyError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20311976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com