1

I have these two classes(SimManager and Sim) that I want to create mock objects of and then use stub methods from them.

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 }

the tests are throwing these two error traces on line no 9 above.

first:

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)

second:

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)

I have added the mockito-all-1.9.5.jar in my libs folder and also added it to build paths. I don't understand whats the problem. Please Help.

dirtydexter
  • 1,063
  • 1
  • 10
  • 17

1 Answers1

1

I think you have to use Dexmaker.

Take a look to this thread:

Mockito Android dynamic proxies

Community
  • 1
  • 1
alfcope
  • 2,327
  • 2
  • 13
  • 21
  • Now this exception trace is coming: java.lang.NoClassDefFoundError: com.google.dexmaker.stock.ProxyBuilder at com.google.dexmaker.mockito.DexmakerMockMaker.createMock(DexmakerMockMaker.java:56) 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) – dirtydexter Nov 05 '14 at 09:41
  • I am not an android expert, but it looks like you do not have the dexmaker dependencies on your classpath. – alfcope Nov 05 '14 at 12:12
  • Yeah apparently i had used a wrong jar for dexmaker but now have both the jars added as given here https://code.google.com/p/dexmaker/downloads/list – dirtydexter Nov 05 '14 at 12:35
  • But now again i am getting this trace 11-05 18:03:49.215: W/dalvikvm(2540): Unable to resolve superclass of Lorg/mockito/cglib/transform/AbstractProcessTask; (619) 11-05 18:03:49.215: W/dalvikvm(2540): Link of class 'Lorg/mockito/cglib/transform/AbstractProcessTask;' failed 11-05 18:03:49.220: W/ClassPathPackageInfoSource(2540): Cannot load class. Make sure it is in your apk. Class name: 'org.mockito.cglib.transform.AbstractProcessTask'. Message: org.mockito.cglib.transform.AbstractProcessTask – dirtydexter Nov 05 '14 at 12:35
  • It looks like you need to have the libraries in your apk. Take a look to this link: http://stackoverflow.com/questions/15617610/mockito-on-android-emulator – alfcope Nov 05 '14 at 16:00
  • Yeah I have been there, and I have already added all the libraries to my build and dependency paths. – dirtydexter Nov 06 '14 at 04:22
  • This is still broken for me. 3 years later :( – tricknology Dec 28 '17 at 01:37