1

我這裏有一個很好的報告問題:Robolectric =的Mockito:無法創建模擬或間諜因爲的Mockito:dexcache == NULL

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創建模擬或間諜對象嗎?

注:如果我不使用Robolectric和使用常規ActivityInstrumentationTestCase2@RunWith(AndroidJUnit4.class)我可以創建模擬和間諜對象...

這個問題1.9的Mockito

+0

[Robolectric +的Mockito]的可能的複製(http://stackoverflow.com/questions/35970899/robolectric-mockito) –

+0

我的問題是不同的,解決的辦法是不同。 – Aggressor

+0

您的解決方案不同,因爲Mockito在1.9.5之前不支持dexmaker。如果你確保你不使用mockito-android,你可以使用任何你喜歡的版本。 –

回答

1

Robolectric用於在構建機器JVM上運行的單元測試。這些測試您不需要Dexmaker

所以,請您正確build.gradle

androidTestCompile "com.crittercism.dexmaker:dexmaker:${versions.dexmaker}" 
androidTestCompile "com.crittercism.dexmaker:dexmaker-dx:${versions.dexmaker}" 
androidTestCompile "com.crittercism.dexmaker:dexmaker-mockito:${versions.dexmaker}" 
+0

確實,我可以安全地刪除這些,但我仍然得到相同的錯誤,除非我使用Mockito 1.9或更少。 – Aggressor