我對Robolectric非常陌生,所以如果我在這裏丟失了一些明顯的東西,請提前致歉。我有一個應用程序,它使用從assets
目錄加載數據庫,並且我想使用Robolectric框架來測試該數據庫。我能夠獲得對數據庫的引用,但似乎是空的。 SQLiteAssetHelper向日志輸出「成功打開的數據庫」消息,但數據庫中沒有表。使用Robolectric和SQLiteAssetHelper
編輯:下面是我使用的類@ user2953017張貼下面讓我setUp
方法數據庫的代碼:
@Before
public void setUp() {
Context context = Robolectric.getShadowApplication().getApplicationContext();
SQLiteDatabase db = (new DataBaseWrapper(context)).getReadableDatabase();
Cursor c = db.rawQuery("SELECT name FROM sqlite_master WHERE type='table'", null);
if (!c.moveToFirst()) {
Log.w("debug", "No tables!");
}
// My second query here fails, since the database contains no tables.
}
從logcat的:
W/debug: No tables!
DEBUG: Loading resources for android from jar:/home/<name>/.m2/repository/org/robolectric/android-res/4.1.2_r1_rc/android-res-4.1.2_r1_rc-real.jar!/res...
E/Debug: java.lang.RuntimeException: SQL exception in query
的SQL異常的原因是找不到指定的表名。
我很感激任何意見。
非常感謝您的幫助。我從'copyDataBase()'的'FileOutputStream'構造函數中得到'FileNotFound'異常。 'outFileName'設置爲'/ data/data//databases/'。任何想法這裏有什麼問題? –
Ben
你在SD卡上寫這個文件嗎?如果是,那麼請在manifest.xml中添加這一行: ..並且不要硬編碼您的路徑使用DB_PATH + DB_NAME –
我剛剛使用內部存儲,我從'DB_PATH + DB_NAME'獲得'outFileName'。不過,感謝您的幫助。我會更新這個問題,如果我設法讓這個工作,當我有一些時間再次捅一遍。 – Ben