我看到了這樣一個問題: Mockito + Dexmaker on Android+的Mockito上Dexmaker Android的2
而且使用我終於來到了另一個問題的答案後: 了java.lang.RuntimeException:java.lang.IllegalArgumentException異常:優化數據目錄/ SD卡不屬於當前用戶。共享存儲無法保護您的應用程序免受代碼注入攻擊。
我使用最新版本的mockito和dexmaker以及dexmaker-mockito。
我正在使用一個單獨的測試項目。
完整堆棧跟蹤(testParse是我的測試功能):
java.lang.RuntimeException: java.lang.IllegalArgumentException: Optimized data directory /sdcard is not owned by the current user. Shared storage cannot protect your application from code injection attacks.
at com.google.dexmaker.DexMaker.generateAndLoad(DexMaker.java:388)
at com.google.dexmaker.stock.ProxyBuilder.buildProxyClass(ProxyBuilder.java:252)
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.mock(Mockito.java:1245)
at org.mockito.Mockito.mock(Mockito.java:1139)
at com.myproject.parser.JSONParserTest.testParse(JSONParserTest.java:29)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1701)
Caused by: java.lang.IllegalArgumentException: Optimized data directory /sdcard is not owned by the current user. Shared storage cannot protect your application from code injection attacks.
at dalvik.system.DexFile.<init>(DexFile.java:100)
at dalvik.system.DexFile.loadDex(DexFile.java:149)
at dalvik.system.DexPathList.loadDexFile(DexPathList.java:259)
at dalvik.system.DexPathList.makeDexElements(DexPathList.java:223)
at dalvik.system.DexPathList.<init>(DexPathList.java:106)
at dalvik.system.BaseDexClassLoader.<init>(BaseDexClassLoader.java:46)
at dalvik.system.DexClassLoader.<init>(DexClassLoader.java:57)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at com.google.dexmaker.DexMaker.generateAndLoad(DexMaker.java:382)
... 19 more
發佈完整的堆棧跟蹤。 – kabuko