我想在Android應用程序中測試我的SQLiteOpenHelper
子類的插入和檢索方法。 SQLLiteHelper子類存在於被測試的應用程序中,並在安裝文件夾中創建一個數據庫。但是,單元測試存在於測試應用程序中的InstrumentTestCase
中,我想在測試應用程序中創建測試數據庫。無法在Android測試應用程序中打開數據庫
不幸的是,如果我嘗試建立/測試程序打開一個數據庫,我得到以下異常:
android.database.sqlite.SQLiteException: unable to open database file
at android.database.sqlite.SQLiteDatabase.dbopen(Native Method)
at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1584)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:638)
at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:168)
at com.kizoom.android.mybus.storage.MyStopsDatabase.getMyStops(MyStopsDatabase.java:63)
at com.kizoom.mybus.test.MyStopsDatabaseTest.testGetMyStops(MyStopsDatabaseTest.java:24)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:191)
at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:181)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:164)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:151)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:425)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1520)
The following information appears in LogCat.
02-21 11:52:16.204: ERROR/Database(1454): sqlite3_open_v2("/data/data/com.kizoom.mybus.test/databases/MyStops", &handle, 6, NULL) failed
02-21 11:52:16.204: ERROR/SQLiteOpenHelper(1454): Couldn't open MyStops for writing (will try read-only):
02-21 11:52:16.204: ERROR/SQLiteOpenHelper(1454): android.database.sqlite.SQLiteException: unable to open database file
02-21 11:52:16.204: ERROR/SQLiteOpenHelper(1454): at android.database.sqlite.SQLiteDatabase.dbopen(Native Method)
02-21 11:52:16.204: ERROR/SQLiteOpenHelper(1454): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1584)
02-21 11:52:16.204: ERROR/SQLiteOpenHelper(1454): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:638)
有誰知道爲什麼會失敗?
錯誤提示您沒有創建數據庫 - 或者可能是在SQLiteOpenHelper.onCreate()之外創建它(因爲它無法打開),因此當您使用其他SQLiteOpenHelper方便的方法時,不知道你的數據庫。請將您的代碼發佈到創建數據庫的位置,並將您的子類「SQLiteOpenHelper」的'onCreate'發佈。 – RivieraKid
正確答案是這樣的:http://stackoverflow.com/a/8488722/1432640 – stillwaiting