kotlinでユニットテストとモックライブラリを使用する【kotlinの開発環境を構築する】

前回、IntelliJ IDEAをインストールし、kotlinのプロジェクトを作成、DIコンテナであるKoinのインストールまで進めた。
今日は以下2つを進めていこうと思う。

  • ユニットテスト
  • モックライブラリ

ユニットテストを実行するには?

テストを作成後、IntelliJのエディタの行番号あたりに表示される緑の三角を押下すると実行できる。

テストコード実行時の絵

テストを実行するとエラーが発生した

以下の様なエラーが発生した。Testクラスが見つからないとのこと。

Error:(6, 20) Kotlin: Unresolved reference: Test

build.gradle.ktsにテストライブラリの依存は書いてるんだけどなぁ

// Use the Kotlin test library.
testImplementation("org.jetbrains.kotlin:kotlin-test")

こちらの記事を参考にFile > Invalidate Cache > Restart とすれば直った。
恐らく、依存関係を再インストールしたのだと思う。

ユニットテスト実行結果

ブレークポイントを掛けられる様にする

特になにも設定しなくてもできた。
ブレークを掛けたい行の行番号あたりをクリックすると赤い点が付く、その後ユニットテストをデバッグ実行すると、該当の行で処理がストップする。

IntelliJでデバッグ実行しブレークを掛けている図

モックライブラリ「MockK」を導入する

ユニットテストを書くにあたって、IOを伴う様な処理はモックに差し替えたい事がしばしばあるので、モックライブラリを導入する。

依存を追加する

dependencies {
    testImplementation("io.mockk:mockk:1.9.3")
}

Buildタブのトンカチマークをクリックすると簡単に再ビルドされ依存関係も解決される

IntelliJのBuildタブ

ユニットテストで、モックオブジェクトを作ってDIコンテナに登録するにはこんな感じらしい。

        // ExampleRepositoryクラスのモックを作成
        val mockAdapter = mockk<ExampleRepository>()

        // getメソッドの振る舞いを上書き
        every { mockAdapter.get() } returns "injected repository"

        // DIコンテナがモックを返す様に定義を上書き
        loadKoinModules(module {
            single(override = true) { mockAdapter as IExampleRepository }
        })

こんな感じでモックライブラリの導入まで進める事が出来た。

「kotlinでユニットテストとモックライブラリを使用する【kotlinの開発環境を構築する】」への1件のフィードバック

コメントする