java - Mockito 抛出 java.lang.NoClassDefFoundError 和 java.lang.VerifyError

标签 java android eclipse unit-testing mockito

我有这两个类(SimManager 和 Sim),我想为其创建模拟对象,然后使用它们的 stub 方法。

1  public class ContactTypeTest extends AndroidTestCase {
2  
3    @Override
4    public void setUp() throws Exception {
5      super.setUp();
6    
7      SimManager mockSimManager = mock(SimManager.class);
8      Sim mockSim = mock(Sim.class);
9       
10     when(mockSim.getOperator()).thenReturn("operator");
11     when(mockSim.getCircle()).thenReturn(circle);
12     when(mockSimManager.findSimBySerial("simSerial")).thenReturn(mockSim);
13    
14   }
15
16 }

测试在上面的第 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 in.mubble.bi.test.core.message.ContactTypeTest.setUp(ContactTypeTest.java:25) 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:1741)

第二个:

java.lang.NoClassDefFoundError: org/mockito/internal/creation/jmock/ClassImposterizer$3 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 in.mubble.bi.test.core.message.ContactTypeTest.setUp(ContactTypeTest.java:25) 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:1741)

我已将 mockito-all-1.9.5.jar 添加到我的 libs 文件夹中,并将其添加到构建路径中。我不明白这是什么问题。请帮忙。

最佳答案

我认为您必须使用 Dexmaker

看看这个线程:

Mockito Android dynamic proxies

关于java - Mockito 抛出 java.lang.NoClassDefFoundError 和 java.lang.VerifyError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26732406/

相关文章:

java - 当响应包含文件时,页面导航/渲染响应阶段将被忽略

java - 用户 'root' @'localhost' 的 c3p0 访问被拒绝(使用密码 yes)

sql - 使用 Maven 对 Postgres 数据库进行单元测试

android - 在启动时将所有静态缓冲区加载到显存?

java - 使用 Tab 键盘在方法的参数之间切换的 Eclipse 快捷方式

java - JPA 验证 - OneToOne 到同一张表

java - 如何在android中将sqlite数据库导出为csv文件?

java - 带 FlowLayout 的 Swing GUI,在 JFrame 上显示的内容不会多于最后添加的组件

android - 如何比较 SQLite 中的小时和分钟?

java - ExoPlayer 测试 - 无法在未调用 Looper.prepare() 的线程内创建处理程序