VerifyError mit Mockito 1.9.5 und DexMaker-Mockito-1.0
Wie viele andere, die ich war begeistert zu hören, dass Mockito funktioniert jetzt auch mit Android und folgte dieses tutorial zu sehen, es mit meinen eigenen Augen. Alles schien Lüfter-Klapp-tastic und ich auf den Weg gebracht, unter Einbeziehung der Spott Lösung in meinem Android-Test-Projekt...
Der Fehler
Jedoch, beim Aufbau meiner Anwendung das test-Projekt zu nutzen, die mockito-all-1.9.5
, dexmaker-1.0
und dexmaker-mockito-1.0
Gläser ich ein problem, mit meinem ersten Testfall. Genau dieses problem in der Tat. Der Teil, würde ich gerne Hilfe auf;
Caused by: 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.<clinit>(Enhancer.java:70)
Ich wurde darüber informiert, dass diese "einfach noch nicht richtig funktioniert", da der stack-trace bedeutet, dass die DexMaker Glas nicht verwendet Referenz diese Antwort. Aber ich bin misstrauisch, dass ich etwas falsch in Bezug auf meine Projekt-set-up und so bin ich auf der Suche, um zu schöpfen aus dem kollektiven knowledge base hier, um zu sehen, wenn in der Tat dies ist user-Fehler oder beta-Fehler.
Meinem Android-Test-Projekt-set-up)
Unten finden Sie einen screenshot von meinem test-Projekt-Konfiguration. Das Projekt wurde über den Android-Assistenten und Aktien keine besonderen features außer der Einbeziehung der Mockito und DexMaker Gläser (oben erwähnt) unter der libs
Verzeichnis.
Der Test
Kümmern Sie nie sich die Inhalt der Prüfung (der test schlägt fehl, bevor der unit-test ausgeführt wird) das set-up ist, wie unten beschrieben;
public class TestSpotRatingCalculator extends InstrumentationTestCase {
@Mock
private AService aService; //Changed the service names being used here - not important.
@Mock
private BService bService;
@Mock
private CService cService;
@Mock
private DService dService;
/**
* @see android.test.AndroidTestCase#setUp()
*/
@Override
protected void setUp() throws Exception {
super.setUp();
MockitoAnnotations.initMocks(this); //Failure here with aforementioned stacktrace...
}
Wenn jemand da draußen hat eine Idee, was falsch ist, dann bitte sound-off hier.
- Vereinbart, dexmaker scheint nicht verwendet zu werden, oder überhaupt nicht wahrgenommen in der Laufzeit. Ich bin nicht ein Android-dev, aber das ist definitiv der Fall hier.
- Danke @Brice - jede Hilfe ist toll und gibt mir etwas zurück zu gehen, um die Entwickler mit. Ich werde zeigen Ihnen an dieser Frage und Ihren Kommentar ein und sehen Sie, wie kommen wir auf...
- Nur ein Hinweis, um zu helfen, den Suchenden... Der hier beschriebene Fehler tritt auch auf, wenn Sie versuchen, zu verwenden, Mockito auf Android ohne dexmaker. In diesem Fall, fügen Sie die zwei dexmaker Krüge, um Ihre
libs/
Verzeichnis-und build-classpath. - Haben Sie das gelöst? Ich habe das gleiche problem stackoverflow.com/questions/24967050/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hallo ich hatte das gleiche problem und ich fand diesen Artikel wirklich nützlich!
http://corner.squareup.com/2012/10/mockito-android.html
Den Hauptinformationen:
Fügen Sie einfach diese in Ihre gradle:
java.lang.IllegalArgumentException: dexcache == null
wenn du es versuchst?Gerade hatten wir das gleiche problem in einem Projekt, aber unsere tests auch nicht auf einem realen Gerät.
War die Ursache zurückverfolgt, wie Mockito verwendet die class loader, und resultiert in der folgenden Fehlermeldung in der LogCat:
Das Update war explizit den class-loader vor dem Aufruf mock() einen test, zB.
Die problematische Datei in Mockito ist diese: org.mockito.intern.- Konfiguration.ClassPathLoader (Linie 121 in 1.9.5)
Als angedeutet hier die dexmaker-android-combo funktioniert nur 100%, wenn die instrumentierte tests werden gegen eine real Gerät.
Ausführen der tests gegen ein echtes Gerät zeigen keine Fehler an.
Für alle, die trotzdem diese Fehlermeldung, prüfen Sie, ob Sie nicht ausschließen, eine Klasse, in der die Abhängigkeiten. Wir ausgeschlossen durch Zufall die MockMaker.class so das war dann die Ursache für die Ausnahme.