質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

2477閲覧

androidのSQLiteOpenHelperを継承したクラスのテストにてエラーが出ます

退会済みユーザー

退会済みユーザー

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2018/09/22 06:38

編集2018/09/23 05:03

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

どうやらcontextが上手く渡っていなかったようです。
Robolectricを利用することで解決しました。

投稿2018/09/23 04:59

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問