使用robolectric测试创建SQLite数据库以ClassNotFoundException结尾

时间:2014-02-28 23:35:56

标签: android sqlite unit-testing robolectric

我正在尝试通过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/中文件的有效路径。可能是一个“破碎的装置”,但也被排除在外。我已经坚持了几个小时并且没有想法。请帮忙。谢谢!

0 个答案:

没有答案