【问题标题】:Cannot Mock WebView with Mockito无法使用 Mockito 模拟 WebView
【发布时间】:2014-02-21 18:49:10
【问题描述】:

我正在使用 Mockito 模拟用于 Android 测试的类。在模拟任何给定的类时,它的行为与预期的一样,除了 WebView (据我在代码中看到的)。尝试使用以下方法模拟 WebView 时:

mock(WebView.class);

我收到以下堆栈跟踪:

java.lang.VirtualMachineError
at dalvik.system.DexFile.defineClass(Native Method)
at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:211)
at dalvik.system.DexPathList.findClass(DexPathList.java:305)
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:62)
at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
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:56)
at org.mockito.internal.util.MockUtil.createMock(MockUtil.java:26)
at org.mockito.internal.MockitoCore.mock(MockitoCore.java:51)
at org.mockito.Mockito.mock(Mockito.java:1243)
at org.mockito.Mockito.mock(Mockito.java:1120)
at com.ncsa.clientrms.navigation.WebFragment2Test.setUp(WebFragment2Test.java:19)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1661)

我查看了this post,这可能表明这两种情况源于同一个错误,特别是因为堆栈跟踪几乎相同。有什么办法可以解决这个问题吗?

顺便说一句,Mockito 是否得到维护?我宁愿不依赖于 2012 年的依赖。

【问题讨论】:

  • 确保导入的是android.webkit
  • import android.webkit.WebView;
  • 是的,Mockito 确实有一个开发人员小团队 (code.google.com/p/mockito/people/list)。不知道下一个什么时候发布。

标签: android testing mocking android-webview mockito


【解决方案1】:

我在使用 mockito 为从 FrameLayout 派生的类以及从 GridView 派生的类创建模拟时遇到了类似的问题。

根据你提到的其他post 的评论,这个问题已经在 dexmaker 和 dexmaker-mockito 的 1.1 版本中得到修复。

这些库可以通过here 下载并包含在您的库目录中。请务必清理并重建以确保使用更新的 1.1 版库。我已经看到 Android Studio 仍在使用以前版本的库的问题。手动删除我项目中的 bin 文件夹解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 2022-10-15
    相关资源
    最近更新 更多