Wie kann ich in meinem Test eine Klasse verspotten, die ich geschrieben habe?
Hier ist mein Testcode:
%Vor%Beispiel ist nur eine Dummy-Klasse.
%Vor%Wie kann ich diesen Fehler beheben?
java.lang.VerifyError: org / mspitho / cglib / core / ReflectUtils um org.mockito.cglib.core.KeyFactory $ Generator.generateClass (KeyFactory.java:167) beim org.mockito.cglib.core.DefaultGeneratorStrategy.generate (DefaultGeneratorStrategy.java:25) beim org.mockito.cglib.core.AbstractClassGenerator.create (AbstractClassGenerator.java:217) beim org.mockito.cglib.core.KeyFactory $ Generator.create (KeyFactory.java:145) bei org.mockito.cglib.core.KeyFactory.create (KeyFactory.java:117) um org.mockito.cglib.core.KeyFactory.create (KeyFactory.java:109) um org.mockito.cglib.core.KeyFactory.create (KeyFactory.java:105) um org.mockito.cglib.proxy.Enhancer (Enhancer.java:70) um org.mockito.internal.creation.cglib.ClassImposterizer.createProxyClass (ClassImposterizer.java:95) beim org.mockito.internal.creation.cglib.ClassImposterizer.imposterise (ClassImposterizer.java:57) beim org.mockito.internal.creation.cglib.ClassImposterizer.imposterise (ClassImposterizer.java:49) beim org.mockito.internal.creation.cglib.CglibMockMaker.createMock (CglibMockMaker.java:24) bei org.mockito.internal.util.MockUtil.createMock (MockUtil.java:33) um org.mockito.internal.MockitoCore.mock (MockitoCore.java:59) um org.mockito.Mockito.spy (Mockito.java:1368)
bei java.lang.reflect.Method.invokeNative (Native Methode) bei java.lang.reflect.Method.invoke (Methode.java:515) um org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall (FrameworkMethod.java:50) beim org.junit.internal.runners.model.ReflectiveCallable.run (ReflectiveCallable.java:12) beim org.junit.runners.model.FrameworkMethod.invokeExplosively (FrameworkMethod.java:47) beim org.junit.internal.runners.statements.RunBefores.evaluate (RunBefores.java:24) beim org.junit.internal.runners.statements.RunAfters.evaluate (RunAfters.java:27) an org.junit.runners.ParentRunner.runLeaf (ParentRunner.java:325) um org.junit.runners.BlockJUnit4ClassRunner.runChild (BlockJUnit4ClassRunner.java:78) beim org.junit.runners.BlockJUnit4ClassRunner.runChild (BlockJUnit4ClassRunner.java:57) bei org.junit.runners.ParentRunner $ 3.run (ParentRunner.java:290) um org.junit.runners.ParentRunner $ 1.schedule (ParentRunner.java:71) um org.junit.runners.ParentRunner.runChildren (ParentRunner.java:288) um org.junit.runners.ParentRunner.access $ 000 (ParentRunner.java:58) um org.junit.runners.ParentRunner $ 2.evaluate (ParentRunner.java:268) um org.junit.runners.ParentRunner.run (ParentRunner.java:363) um org.junit.runners.Suite.runChild (Suite.java:128) um org.junit.runners.Suite.runChild (Suite.java:27) bei org.junit.runners.ParentRunner $ 3.run (ParentRunner.java:290) um org.junit.runners.ParentRunner $ 1.schedule (ParentRunner.java:71) um org.junit.runners.ParentRunner.runChildren (ParentRunner.java:288) um org.junit.runners.ParentRunner.access $ 000 (ParentRunner.java:58) um org.junit.runners.ParentRunner $ 2.evaluate (ParentRunner.java:268) um org.junit.runners.ParentRunner.run (ParentRunner.java:363) um org.junit.runner.JUnitCore.run (JUnitCore.java:137) um org.junit.runner.JUnitCore.run (JUnitCore.java:115) um android.support.test.internal.runner.TestExecutor.execute (TestExecutor.java:54) beim android.support.test.runner.AndroidJUnitRunner.onStart (AndroidJUnitRunner.java:228) beim android.app.Instrumentation $ InstrumentationThread.run (Instrumentation.java:1741)
java.lang.NoClassDefFoundError: org / mockito / internal / creation / cglib / ClassImposterizer $ 3 um org.mockito.internal.creation.cglib.ClassImposterizer.createProxyClass (ClassImposterizer.java:95) beim org.mockito.internal.creation.cglib.ClassImposterizer.imposterise (ClassImposterizer.java:57) beim org.mockito.internal.creation.cglib.ClassImposterizer.imposterise (ClassImposterizer.java:49) beim org.mockito.internal.creation.cglib.CglibMockMaker.createMock (CglibMockMaker.java:24) bei org.mockito.internal.util.MockUtil.createMock (MockUtil.java:33) um org.mockito.internal.MockitoCore.mock (MockitoCore.java:59) um org.mockito.Mockito.spy (Mockito.java:1368)
bei java.lang.reflect.Method.invokeNative (Native Methode) bei java.lang.reflect.Method.invoke (Methode.java:515) um org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall (FrameworkMethod.java:50) beim org.junit.internal.runners.model.ReflectiveCallable.run (ReflectiveCallable.java:12) beim org.junit.runners.model.FrameworkMethod.invokeExplosively (FrameworkMethod.java:47) beim org.junit.internal.runners.statements.RunBefores.evaluate (RunBefores.java:24) beim org.junit.internal.runners.statements.RunAfters.evaluate (RunAfters.java:27) an org.junit.runners.ParentRunner.runLeaf (ParentRunner.java:325) um org.junit.runners.BlockJUnit4ClassRunner.runChild (BlockJUnit4ClassRunner.Java: 78) beim org.junit.runners.BlockJUnit4ClassRunner.runChild (BlockJUnit4ClassRunner.java:57) bei org.junit.runners.ParentRunner $ 3.run (ParentRunner.java:290) um org.junit.runners.ParentRunner $ 1.schedule (ParentRunner.java:71) um org.junit.runners.ParentRunner.runChildren (ParentRunner.java:288) um org.junit.runners.ParentRunner.access $ 000 (ParentRunner.java:58) um org.junit.runners.ParentRunner $ 2.evaluate (ParentRunner.java:268) um org.junit.runners.ParentRunner.run (ParentRunner.java:363) um org.junit.runners.Suite.runChild (Suite.java:128) um org.junit.runners.Suite.runChild (Suite.java:27) bei org.junit.runners.ParentRunner $ 3.run (ParentRunner.java:290) um org.junit.runners.ParentRunner $ 1.schedule (ParentRunner.java:71) um org.junit.runners.ParentRunner.runChildren (ParentRunner.java:288) um org.junit.runners.ParentRunner.access $ 000 (ParentRunner.java:58) um org.junit.runners.ParentRunner $ 2.evaluate (ParentRunner.java:268) um org.junit.runners.ParentRunner.run (ParentRunner.java:363) um org.junit.runner.JUnitCore.run (JUnitCore.java:137) um org.junit.runner.JUnitCore.run (JUnitCore.java:115) um android.support.test.internal.runner.TestExecutor.execute (TestExecutor.java:54) beim android.support.test.runner.AndroidJUnitRunner.onStart (AndroidJUnitRunner.java:228) beim android.app.Instrumentation $ InstrumentationThread.run (Instrumentation.java:1741)
Ich verwende die folgenden Abhängigkeiten in meiner Gradle-Datei:
%Vor% Standardmäßig verwendet Mockito CGLib oder ByteBuddy, die beide eine generage .class
-Dateien haben. Sie laufen auf einem Android-Gerät oder einem Emulator, so dass .class
-Dateien nicht helfen; Sie benötigen stattdessen .dex
.
Passen Sie Ihre Abhängigkeiten so an, dass Sie DexMaker verwenden, wodurch Mockitos Standard außer Kraft gesetzt wird und Mocking in Android-Umgebungen zugelassen wird.
Seit Version 2.6. + hat Mockito ein neues Artefakt hinzugefügt, das ohne weitere Abhängigkeiten für Android funktioniert (d. h. es ist nicht mehr notwendig, DexMaker zu importieren). (Referenz)
Verwenden Sie einfach org.mockito:mockito-android
als eine Abhängigkeit für Ihre instrumentierten Komponententests ( androidTest
). Sie würden immer noch die übliche org.mockito:mockito-core
für Ihre lokalen Unit-Tests verwenden.
Beispiel:
%Vor%Tags und Links android unit-testing mockito