2014-05-06 2 views
0

При попытке изменить класс Calendar на класс mock с помощью jmockit (version1.8) я получил ошибку ниже.Android + jmockit: java.lang.VerifyError: mockit/internal/startup/Startup

Давно ли кто-нибудь знает, как это исправить? Любая помощь будет оценена.

Спасибо,


CalendarMock.java

import java.util.Calendar; 
import java.util.GregorianCalendar; 

import mockit.*; 

public final class CalendarMock extends MockUp<Calendar> { 
    @Mock 
    public static Long getInstance() { return new GregorianCalendar(2000, 0, 1, 0, 0, 0).getTimeInMillis(); } 
} 

DummyTest.java

public void testDummy() throws Exception { 
    new CalendarMock(); 
} 

Error Log

java.lang.VerifyError: mockit/internal/startup/Startup 
at mockit.MockUp.<clinit>(MockUp.java:85) 
at com.hoge.testDummy(DummyTest.java:) 
at java.lang.reflect.Method.invokeNative(Native Method) 
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:1701) 
+0

Выполняете ли вы тест на Dalvik VM? JMockit использует API-интерфейс 'java.lang.instrument', который недоступен для Dalvik, поэтому он не может работать в этой среде; вам нужно будет использовать JVM. –

+0

@ Rogério Спасибо! Re Really !? Да, я пытаюсь использовать JMockit на Android. Как я могу использовать mock на Dalvik VM? – zono

+0

Вам понадобится использовать другой инструмент для издевательств, который может работать в VM Dalvik. JMockit работает только с JVM. –

ответ

0

Это немного поздно Anwer, но это может быть полезным для других пользователей, я думаю, что если вы хотите использовать jmokit вы должны использовать robolectric также, что позволяет запускать тесты на JVM не в Dalvik, или вы можете изменить структуру и использовать mikito для Android.

Смежные вопросы