Sto provando a testare i metodi di inserimento e recupero per la sottoclasse SQLiteOpenHelper
in un'applicazione Android. La sottoclasse SQLLiteHelper esiste nell'app sotto test e crea un database nella cartella di installazione. Tuttavia, il test unitario esiste in un InstrumentTestCase
nell'app di test e vorrei creare un database di test nell'app di test.Impossibile aprire il database nell'app test Android
Purtroppo, se cerco di creare/aprire un database in applicazione di test, ottengo la seguente eccezione:
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)
Qualcuno sa perché questo sarebbe fallire?
L'errore indica che non si sta creando il database, o forse lo si sta creando all'esterno di 'SQLiteOpenHelper.onCreate()' (poiché non può essere aperto) e quindi quando si utilizzano altri metodi di convenienza 'SQLiteOpenHelper', essi sono inconsapevoli del tuo database. Inserisci il tuo codice dove crei il database e il tuo 'onCreate' per la sottoclasse' SQLiteOpenHelper'. – RivieraKid
La risposta corretta è questa: http://stackoverflow.com/a/8488722/1432640 – stillwaiting