【发布时间】:2016-05-13 17:19:44
【问题描述】:
我在这里有一个很好的报告:
但是解决方案不起作用。
我正在使用 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 之后出现
【问题讨论】:
-
我的问题不一样,解决方法也不一样。
-
您的解决方案不同,因为 Mockito 在 1.9.5 之前不支持 dexmaker。如果你确保不使用 mockito-android,你可以使用任何你喜欢的版本。
-
@Jeff Bowman 是
mockito-android您指的特定 SDK?我对此没有任何依赖 -
Robolectric 不需要 dexmaker。 Robolectric 与 jvm 普通 junit 测试一起使用,在构建机器上运行并且不需要 dexiing
标签: android unit-testing mockito robolectric robolectric-gradle-plugin