Android + jmockit:java.lang.VerifyError:mockit / internal / startup / Startup

时间:2014-05-06 13:29:19

标签: java android junit jmockit jmock

当我尝试使用jmockit(version1.8)从Calendar类更改为mock类时,我收到了错误。

有人知道如何解决这个问题吗?任何帮助将不胜感激。

谢谢,


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();
}

错误记录

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)

2 个答案:

答案 0 :(得分:0)

它有点迟了但它对其他用户有用,我想如果你想使用jmokit你也必须使用robolectric,它允许你在JVM上运行测试而不是在Dalvik,或者你可以改变框架并使用mikito for android。

答案 1 :(得分:0)

在以下JVM参数中将-Xverify设置为none,这将禁用Java字节码验证:

 -Xverify\:none 

Xverify:Reference

如果这行得通,您将找到问题的根本原因。