前提・実現したいこと
Android StudioでSQLiteOpenHelperを継承したクラスのテストをしています。
エラーを読むにwords.sqliteファイルが見つからないようです。
場所が.test以下なのが怪しいと思うものの、対策がわかりません。
Could not open database
とも同時に出るので、単純にDBがオープンできないのかもしれません。
Junitはそこそこ使用したことがあるものの、Androidテストは初めてで、そもそもcontextが正しく渡せているかも自信がなく、とっかかりに困っています。
何故エラーが起こるのか?どうすれば解決できるのか?
ご助言いただければ幸いです。
発生している問題・エラーメッセージ
E/SQLiteDatabase: Failed to open database '/data/user/0/com.example.lavi.mojitest.test/databases/words.sqlite'. android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database) E/SQLiteOpenHelper: Couldn't open words.sqlite for writing (will try read-only): android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database E/SQLiteLog: (14) cannot open file at line 36053 of [605907e73a] E/SQLiteLog: (14) os_unix.c:36053: (13) E/SQLiteDatabase: Failed to open database '/data/user/0/com.example.lavi.mojitest.test/databases/words.sqlite'. android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
該当のソースコード
package com.example.lavi.mojitest; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; import android.test.AndroidTestCase; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.notNullValue; import static org.junit.Assert.*; @RunWith(AndroidJUnit4.class) public class WordsDatabaseHelperTest extends AndroidTestCase { Context context; @Override @Before public void setUp() throws Exception { super.setUp(); context=InstrumentationRegistry.getContext(); } @Test public void onCreate() { WordsDatabaseHelper helper=new WordsDatabaseHelper(context); SQLiteDatabase db =helper.getReadableDatabase(); try { assertThat(db,notNullValue()); } finally { db.close(); } } }
試したこと
MainActivityでは
WordsDatabaseHelper helper=new WordsDatabaseHelper(context);
SQLiteDatabase db =helper.getReadableDatabase();
としてもエラーは出なかったです。
補足情報(FW/ツールのバージョンなど)
android studio 3.1.4
classpath 'com.android.tools.build:gradle:3.1.4'
testImplementation 'junit:junit:4.12'
testImplementation 'org.hamcrest:hamcrest-library:1.3'
androidTestImplementation 'com.android.support.test🏃♂️1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
compileSdkVersion 27
minSdkVersion 16
targetSdkVersion 27
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。