我正在尝试通过robolectric执行一个简单的创建数据库冒烟测试,如下所示:
@RunWith(RobolectricTestRunner.class)
public class DBTest {
@Test
public void testSmoke() {
ShadowActivity activity = new ShadowActivity();
File f = activity.getDatabasePath("mydb");
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(f, null);
}
}
但我得到的是:
java.lang.NoClassDefFoundError: dalvik/system/BlockGuard$Policy
at android.database.sqlite.SQLiteConnection.applyBlockGuardPolicy (SQLiteConnection.java:1036)
...
Caused by: java.lang.ClassNotFoundException: dalvik.system.BlockGuard$Policy
at org.robolectric.bytecode.AsmInstrumentingClassLoader.findClass(AsmInstrumentingClassLoader.java:119)
at org.robolectric.bytecode.AsmInstrumentingClassLoader.loadClass(AsmInstrumentingClassLoader.java:95)
at android.database.sqlite.SQLiteConnection.$$robo$$SQLiteConnection_19f8_applyBlockGuardPolicy(SQLiteConnection.java:1036)
...
assertEquals(true, true)
的简单参考测试工作正常。 getDatabasePath()
方法返回/tmp/
中文件的有效路径。可能是一个“破碎的装置”,但也被排除在外。我已经坚持了几个小时并且没有想法。请帮忙。谢谢!