【发布时间】:2018-12-28 13:45:41
【问题描述】:
当我尝试使用 jmockit(version1.8) 从日历类更改为模拟类时,出现以下错误。
有人知道怎么解决吗?任何帮助将不胜感激。
谢谢,
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)
【问题讨论】:
-
您是否在 Dalvik VM 上运行测试? JMockit 使用了 Dalvik 上没有的
java.lang.instrumentAPI,所以它不能在这个环境中工作;您需要使用 JVM。 -
@Rogério 谢谢!真的吗!?是的,我正在尝试在 Android 上使用 JMockit。如何在 Dalvik VM 上使用 mock?
-
您必须使用其他可以在 Dalvik VM 中运行的模拟工具。 JMockit 仅适用于 JVM。
标签: java android junit jmockit jmock