【发布时间】:2012-10-17 17:09:20
【问题描述】:
尝试使用 Mockito.spy 在 Android VM(模拟器 4.1)上进行检测后对活动进行部分模拟。这是我得到的错误
java.lang.VirtualMachineError
at dalvik.system.DexFile.defineClass(Native Method)
at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:207)
at dalvik.system.DexFile.loadClass(DexFile.java:196)
at dalvik.system.DexClassLoader.findClass(DexClassLoader.java:226)
at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at com.google.dexmaker.stock.ProxyBuilder.loadClass(ProxyBuilder.java:272)
at com.google.dexmaker.stock.ProxyBuilder.buildProxyClass(ProxyBuilder.java:254)
at com.google.dexmaker.mockito.DexmakerMockMaker.createMock(DexmakerMockMaker.java:54)
at org.mockito.internal.util.MockUtil.createMock(MockUtil.java:26)
at org.mockito.internal.MockitoCore.mock(MockitoCore.java:49)
at org.mockito.Mockito.spy(Mockito.java:1324)
at com.company.droid.helper.ActivitySandbox.setupActivity(ActivitySandbox.java:21)
at com.company.droid.ui.fragment.signup.SignupFragmentTest.setUp(SignupFragmentTest.java:50)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1448)
我尝试过更改虚拟机、Mockito 版本、Dexmaker 版本,但似乎没有任何效果。有什么想法吗?
【问题讨论】:
-
您能否在日志中查看来自 Dalvik 的任何消息,尤其是在安装或应用启动时?你通常会得到一堆提示(可能是隐晦地)关于问题的更多细节。
-
我最近从仪器测试切换到与 robolectric 库配对的 junit。关于间谍——我的观察通常是设计问题。
-
看起来他们在今年 3 月发布的 DexMaker 1.1 中包含了修复程序。虽然 jars(
dexmaker-1.1和dexmaker-mockito-1.1)目前未托管在 Google Code 网站上,但该网站底部有链接可从 Maven 存储库下载它们。
标签: android mockito dalvik dexmaker