Kotest例外テスト(Testing Exceptions)

Kotestでの例外テストについて説明する。

Kotest例外テスト

Kotestを使うと、例外を簡単にテストできる。

package com.devkuma.kotest.tutorial.exceptions

import io.kotest.assertions.throwables.shouldNotThrow
import io.kotest.assertions.throwables.shouldThrow
import io.kotest.core.spec.style.FreeSpec
import io.kotest.matchers.shouldBe

class ExceptionTest : FreeSpec({

    "例外発生テスト" - {
        "例外が発生する場合" {
            // 例外が発生するコードを実行し、その例外を捕捉する。
            val errorProneFunction: () -> Unit = {
                throw IllegalArgumentException("例外発生!")
            }
            val exception = shouldThrow<IllegalArgumentException> {
                errorProneFunction()
            }

            // 期待した例外が発生した場合、テストを通過する。
            exception.message shouldBe "例外発生!"
        }

        "例外が発生しない場合" {
            // 例外が発生しないコードを実行し、例外が発生しないことを確認する。
            val safeFunction: () -> Unit = {}
            val exception = shouldNotThrow<IllegalArgumentException> {
                safeFunction()
            }

            // 例外が発生しない場合、テストを通過する。
            exception shouldBe null
        }
    }
})

参照