Wenn ich meine Mockito-Bibliothek zum Klassenpfad hinzufüge und ein einfaches Mockito-Beispiel zum Testen verwende, wo ich versuche, einen falschen Wert für die Funktion add mit dem Mock-Objekt zurückzugeben, bekomme ich java.lang.verifyerror. Der folgende Code wird zum Testen gefolgt von logcat verwendet.
%Vor%Ich erhalte den folgenden Fehler. Bitte helfen Sie! Danke.
java.lang.VerifyError: org / mockito / cglib / core / ReflectUtils bei org.mockito.cglib.core.KeyFactory $ Generator.generateClass (KeyFactory.java:167) bei org.mockito.cglib.core.DefaultGeneratorStrategy.generate (DefaultGeneratorStrategy.java:25) bei org.mockito.cglib.core.AbstractClassGenerator.create (AbstractClassGenerator.java:217) bei org.mockito.cglib.core.KeyFactory $ Generator.create (KeyFactory.java:145) bei org.mockito.cglib.core.KeyFactory.create (KeyFactory.java:117) bei org.mockito.cglib.core.KeyFactory.create (KeyFactory.java:109) bei org.mockito.cglib.core.KeyFactory.create (KeyFactory.java:105) bei org.mockito.cglib.proxy.Enhancer. (Enhancer.java:70) bei org.mockito.internal.creation.jmock.ClassImposterizer.createProxyClass (ClassImposterizer.java:85) bei org.mockito.internal.creation.jmock.ClassImposterizer.imposterise (ClassImposterizer.java:62) bei org.mockito.internal.creation.jmock.ClassImposterizer.imposterise (ClassImposterizer.java:56) bei org.mockito.internal.creation.CglibMockMaker.createMock (CglibMockMaker.java:23) bei org.mockito.internal.util.MockUtil.createMock (MockUtil.java:26) bei org.mockito.internal.MockitoCore.mock (MockitoCore.java:51) bei org.mockito.Mockito.mock (Mockito.java:1243) bei org.mockito.Mockito.mock (Mockito.java:1120) bei testaddmock.testadd (testaddmock.java:24) at java.lang.reflect.Method.invokeNative (Native Methode) bei android.test.AndroidTestRunner.runTest (AndroidTestRunner.java:191) bei android.test.AndroidTestRunner.runTest (AndroidTestRunner.java:176) bei android.test.InstrumentationTestRunner.onStart (InstrumentationTestRunner.java:554) unter android.app.Instrumentation $ InstrumentationThread.run (Instrumentation.java:1701)
Standardmäßig verwendet Mockito cglib, um dynamische Proxies zu erstellen, aber für Android funktioniert das nicht, weil cglib .class-Dateien erzeugt, nicht .dex. Aber ab Version 1.9.5 bietet Mockito einen Erweiterungspunkt, der das Ersetzen der Proxy-Generierungsengine ermöglicht. Sie müssen also nur diese Engine ändern, und ich denke, Dexmaker ist die beste Variante.
Damit es funktioniert, sollten Sie dexmaker-mockito-1.0.jar zu Ihrem Projekt hinzufügen und Mockito wird es verwenden, um seine Proxies zu generieren.
@Grimmy dexmaker-1.0.jar ist auch notwendig.
@ user3054298 Ich traf das gleiche Problem & amp; Gelöst, indem Sie diesem Blogführer folgen: Ссылка
Eine neue Funktion in Mockito 1.9.5 ist die Unterstützung der Dalvik-Laufzeitumgebung von Android. Es verwendet DexMaker, um spontan Mock-Klassen zu generieren. Um Mockito auf einem Gerät oder Emulator zu verwenden, müssen Sie dem libs-Verzeichnis Ihres Testprojekts drei .jar-Dateien hinzufügen: mockito-all-1.9.5.jar, dexmaker-1.0.jar und dexmaker-mockito-1.0.jar .