android - Robolectric = Mockito : Cannot Create Mock or Spy In Mockito Because: dexcache == null

标签 android unit-testing mockito robolectric robolectric-gradle-plugin

我在这里有一个很好的报告问题:

Mockito + Dexmaker on Android

但是该解决方案不起作用。

我正在使用 Robolectric,甚至当我尝试设置 dexmaker 缓存位置时:

@Before
public void setUp()
{
    System.setProperty("dexmaker.dexcache", RuntimeEnvironment.application.getCacheDir().getPath());
}

错误变为

java.lang.RuntimeException:java.lang.NullPointerException

at com.android.dx.DexMaker.generateClassLoader(DexMaker.java:366)
at com.android.dx.DexMaker.generateAndLoad(DexMaker.java:439)
at com.android.dx.stock.ProxyBuilder.buildProxyClass(ProxyBuilder.java:264)
at com.android.dx.mockito.DexmakerMockMaker.createMock(DexmakerMockMaker.java:56)
at org.mockito.internal.util.MockUtil.createMock(MockUtil.java:33)
at org.mockito.internal.MockitoCore.mock(MockitoCore.java:59)
at org.mockito.Mockito.spy(Mockito.java:1368)

您有什么想法可以让我使用 Robolectric 创建 Mock 或 Spy 对象吗?

注意:当我不使用 Robolectric 而使用常规 ActivityInstrumentationTestCase2@RunWith(AndroidJUnit4.class) 时,我可以创建 Mock 和 Spy 对象...

这个问题是在Mockito 1.9之后出现的

最佳答案

我刚刚找到了这个解决方法:

https://comadeblog.wordpress.com/2013/11/12/dexcachenull-for-mockito-on-robolectric/comment-page-1/

长话短说:

使用编译'org.mockito:mockito-core:1.9.0'。更高版本会抛出此错误。

这是我发现让它与 Robolectric 一起工作的唯一方法。

关于android - Robolectric = Mockito : Cannot Create Mock or Spy In Mockito Because: dexcache == null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37215871/

相关文章:

python - 在为 Android 应用程序制作 Tensorflow lite 模型以便显示输出时,我需要做些什么特别的事情吗?

c# - 为 .net5 项目创建单元测试

java - 使用 Mockito 模拟 HttpSession

android - 实体在 MultiPartEntityBuilder 中返回错误

Android间歇类未找到运行时异常

javascript - 如何在 WheelPicker (React Native JS) 刚刚选择的项目之前添加字符串

python - 我应该如何使用独特的 slug 测试 Django View

c++ - 河马模拟 : mocking just a part of class

带有 Mockito 的 Android 中的 java.lang.RuntimeException : Stub!

java - 使用 PowerMockito 模拟静态方法