0Pricing
Kotlin Academy · レッスン

アサーション

動作を検証します

「アサーション」はCoddyKit上の無料Kotlin Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはKotlin Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Kotlin Academyコースには全4レッスンが含まれています。

アサーションとは何ですか

アサーションは、実際の値が期待した値と一致することを確認します。失敗すると、役立つメッセージとともにテストが失敗します。

JUnit5では、org.junit.jupiter.api.Assertionsにアサーションが用意されています。

assertEquals

最もよく使われるアサーションです。引数の順序に注意してください。期待値が先で、実際の値が後です。

import org.junit.jupiter.api.Assertions.assertEquals

fun main() {
    val sum = 2 + 3
    assertEquals(5, sum)
    println("passed")
}

assertTrueとassertFalse

真偽条件を直接アサーションします。

import org.junit.jupiter.api.Assertions.assertTrue
import org.junit.jupiter.api.Assertions.assertFalse

fun main() {
    assertTrue(10 > 5)
    assertFalse("".isNotEmpty())
    println("ok")
}

nullのアサーション

assertNullとassertNotNullを使って、null許容性を検証します。多くの場合、assertNotNullはスマートキャストも行います。

import org.junit.jupiter.api.Assertions.assertNotNull
import org.junit.jupiter.api.Assertions.assertNull

fun main() {
    val name: String? = "Ada"
    assertNotNull(name)
    assertNull(null)
    println("done")
}

例外のアサーション

assertThrowsは、ブロックが特定の例外をスローすることを検証します。例外が返されるため、メッセージを調べることもできます。

import org.junit.jupiter.api.Assertions.assertThrows
import org.junit.jupiter.api.Assertions.assertEquals

fun main() {
    val ex = assertThrows(IllegalArgumentException::class.java) {
        require(false) { "bad input" }
    }
    assertEquals("bad input", ex.message)
    println("caught")
}

アサーションのグループ化

assertAllは複数のアサーションを実行し、最初の失敗で停止するのではなく、すべての失敗をまとめて報告します。

import org.junit.jupiter.api.Assertions.assertAll
import org.junit.jupiter.api.Assertions.assertEquals

fun main() {
    assertAll(
        { assertEquals(2, 1 + 1) },
        { assertEquals(4, 2 + 2) }
    )
    println("all passed")
}

失敗メッセージ

メッセージ(または遅延評価されるメッセージラムダ)を渡すと、失敗の原因をメッセージだけで理解できるようになります。

import org.junit.jupiter.api.Assertions.assertEquals

fun main() {
    val balance = 100
    assertEquals(100, balance, "balance should be unchanged")
    println("ok")
}

コレクションの比較

assertEqualsは、順序と内容が一致する場合にリストの比較にも使用できます。具象型の異なるIterableにはassertIterableEqualsを使用します。

import org.junit.jupiter.api.Assertions.assertEquals

fun main() {
    val expected = listOf(1, 2, 3)
    val actual = (1..3).toList()
    assertEquals(expected, actual)
    println("lists equal")
}

AssertKによる流れるようなアサーション

AssertKのようなライブラリでは、Kotlinのコードベースでよく使われる、読みやすいassertThat(x).isEqualTo(y)形式を利用できます。

// assertThat(result).isEqualTo(5)
// assertThat(list).contains("a", "b")
// assertThat(name).isNotNull()

fail()

failを呼び出すと、強制的に失敗させることができます。到達不能な分岐や未完成のテストを示す場合に便利です。

import org.junit.jupiter.api.Assertions.fail

fun process(x: Int): String = when {
    x > 0 -> "positive"
    else -> fail("unexpected value")
}

適切なアサーションの選択

失敗の内容を明確にするため、最も具体的なアサーションを選びます。

  • 等価性 → assertEquals
  • 条件 → assertTrue/assertFalse
  • エラー → assertThrows
  • 複数の確認 → assertAll

簡単な確認

最初の失敗で停止するのではなく、失敗した確認をすべて一度に報告するテストにしたいとします。何を使えばよいでしょうか。

まとめ

JUnit5のアサーションについて学びました。

  • assertEquals(期待値が先)、assertTrue/assertFalse
  • assertNull/assertNotNull、assertThrows
  • 確認をグループ化するassertAll
  • 明確さのためにメッセージを追加します

次はMockKによる依存関係のモックです。

よくある質問

「アサーション」レッスンは無料ですか?

はい。「アサーション」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Kotlin Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Kotlin Academyコースには全4レッスンが含まれています。

「アサーション」で何を学びますか?

動作を検証します ブラウザで直接実行するハンズオンコードでKotlin Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Kotlin Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのKotlin Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「アサーション」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このKotlin Academyレッスンでコードを書いて実行できますか?

はい。すべてのKotlin Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. JUnit5でテストを書く
  2. アサーション
  3. MockKによるモック
  4. コルーチンのテスト
← Kotlin Academyに戻る