カテゴリ: Kotlin 更新日: 2026/02/01

Kotlinでデータベースのテストを行う方法を徹底解説!初心者でもわかるRoomのテスト入門

Kotlinでデータベースのテストを行う方法
Kotlinでデータベースのテストを行う方法

先生と生徒の会話形式で理解しよう

生徒

「KotlinでRoomデータベースを使っているんですが、ちゃんと正しく動いてるかテストする方法ってあるんですか?」

先生

「もちろんありますよ。KotlinでRoomを使うときは、テストもとても大切なんです。今回は、初心者でもできるRoomデータベースのテスト方法をわかりやすく紹介しますね。」

生徒

「テストって難しそうですが、自分でもできるでしょうか?」

先生

「大丈夫ですよ。難しいコードは使わずに、1つずつ丁寧に説明していきます。」

1. Roomのテストってなに?

1. Roomのテストってなに?
1. Roomのテストってなに?

テストとは、プログラムが正しく動くかどうかを確認する作業のことです。KotlinでRoom(ルーム)という仕組みを使ってアプリの中にデータを保存しているとき、「ちゃんと保存できたかな?」「ちゃんと読み込めたかな?」というのを調べるためにテストをします。

特に初心者の方がやりがちなのは、「画面で見て確認する」だけです。でも、それだけでは本当に正しく動いているか分からないこともあります。そんなときに使うのが、自動で確認できるテストです。

2. テスト用のRoomデータベースを作ろう

2. テスト用のRoomデータベースを作ろう
2. テスト用のRoomデータベースを作ろう

通常のRoomデータベースはスマホの中に保存されますが、テストのときは本物のデータを壊さないように、テスト専用のデータベースを一時的に使います。

これを「インメモリデータベース」と言います。英語で "In-Memory"(インメモリ)と書きますが、「メモリの中だけに一時的に作るデータベース」という意味です。スマホには保存されません。


@get:Rule
val instantTaskExecutorRule = InstantTaskExecutorRule()

private lateinit var database: AppDatabase
private lateinit var userDao: UserDao

@Before
fun setup() {
    database = Room.inMemoryDatabaseBuilder(
        ApplicationProvider.getApplicationContext(),
        AppDatabase::class.java
    ).allowMainThreadQueries().build()

    userDao = database.userDao()
}

@After
fun tearDown() {
    database.close()
}

inMemoryDatabaseBuilderを使うと、実際のスマホには保存されないテスト用のRoomデータベースが作れます。

3. DAOのテストを書いてみよう

3. DAOのテストを書いてみよう
3. DAOのテストを書いてみよう

DAO(ダオ)というのは、データを読み書きするための入り口のようなものです。insertgetAllといった関数が用意されています。DAOが正しく動くかをテストすることで、データベースの処理が間違っていないか確認できます。


@Test
fun insertUserAndGetAll_returnsCorrectUser() = runTest {
    val user = User(id = 1, name = "太郎", age = 20)
    userDao.insert(user)

    val result = userDao.getAll()
    assertThat(result).contains(user)
}

このようにテスト関数を作って、「保存したらちゃんと取り出せるか」を確認しています。

Kotlinを基礎からしっかり学びたい人や、 Java経験を活かしてモダンな言語にステップアップしたい人には、 定番の入門書がこちらです。

基礎からわかるKotlinをAmazonで見る

※ Amazon広告リンク

4. テストを動かすには?

4. テストを動かすには?
4. テストを動かすには?

テストを書くと終わりではなく、実行する必要があります。Android Studio(アンドロイドスタジオ)を使っている場合、書いたテスト関数の左側にある「▶」ボタンを押すだけでテストが始まります。

うまくいった場合は「緑のチェック」、失敗すると「赤いバツ」が表示されます。テストが失敗したときは、何が間違っているのかメッセージが表示されるので、それを見て直していきます。

5. Roomのテストでよく使う便利な道具

5. Roomのテストでよく使う便利な道具
5. Roomのテストでよく使う便利な道具

KotlinでRoomをテストするとき、次のような道具をよく使います。

  • JUnit(ジェイユニット):テストの基本的な機能を提供する仕組み
  • assertThat:予想通りの結果になったか確認する関数
  • runTest:コルーチンの中でテストを書くときに使う関数
  • @Before@After:テストの前後で準備や後片付けをするアノテーション

これらを使うことで、しっかりとしたテストが書けるようになります。

6. 初心者が気をつけるポイント

6. 初心者が気をつけるポイント
6. 初心者が気をつけるポイント

はじめてRoomのテストを書くときは、次の点に注意しましょう。

  • 本番用のデータベースではなく、必ずinMemoryDatabaseBuilderを使う
  • テストの中でallowMainThreadQueries()を付ける(初心者向けには簡単に動かすため)
  • データベースは@Afterで必ずclose()して終了する

また、エラーが出たときは焦らずに、エラーメッセージを読んで対処しましょう。

7. 実行結果の例

7. 実行結果の例
7. 実行結果の例

テストを実行すると、結果が次のように表示されます。


Tests passed: 1 of 1 test – insertUserAndGetAll_returnsCorrectUser

これが表示されれば、テストは成功です。Roomを使った保存や読み込みが正しくできていることが分かります。

関連記事:
カテゴリの一覧へ
新着記事
New1
Go言語
Go言語の短絡評価(ショートサーキット)を使った条件式の工夫をやさしく解説!初心者でも理解できる基本知識
New2
Go言語
Go言語の構造体の初期化パターンとコンストラクタ的関数の書き方を徹底解説!初心者でもわかる基本と実用例
New3
Kotlin
Kotlinの例外処理とキャンセルの連携を完全ガイド!初心者でもわかるCoroutineExceptionHandlerの使い方
New4
Go言語
Go言語のクロージャとは?関数内関数の活用例と仕組み
人気記事
No.1
Java&Spring記事人気No1
Kotlin
KotlinのChannelでデータをやり取りする方法を完全ガイド!初心者にもわかる非同期通信の基本
No.2
Java&Spring記事人気No2
Go言語
Go言語でのDB接続情報を環境変数で管理する方法|初心者でも安全に設定
No.3
Java&Spring記事人気No3
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.4
Java&Spring記事人気No4
Kotlin
Kotlinのビルド設定エラーと解決法まとめ!初心者向けGradleトラブル対処ガイド
No.5
Java&Spring記事人気No5
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.6
Java&Spring記事人気No6
Kotlin
Kotlinでテキスト表示・編集!初心者でもわかるTextViewとEditTextの使い方
No.7
Java&Spring記事人気No7
Kotlin
Kotlin DSLとGroovy DSLの違いをやさしく解説!初心者でもわかるGradleスクリプトの使い分け
No.8
Java&Spring記事人気No8
Go言語
Go言語のgo.modファイル完全ガイド!初心者でもわかる仕組みと書き方

💻 作業効率アップに

ノートPCを縦置きしてデスクを広く。
省スペースで片づく定番スタンド

UGREEN 縦型スタンドをAmazonで見る

※ Amazon広告リンク