0Pricing
Kotlin Academy · レッスン

JUnit5でテストを書く

テストを構成します

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

JUnit5とは何ですか

JUnit5(JUnit Jupiter)は、JVMおよびKotlin向けの標準テストフレームワークです。テストコードの目印を付けたり、構造化したりするためのアノテーションを提供します。

  • テストはsrc/test/kotlinに配置します
  • 各テストは関数です
  • テストランナーがテストを実行し、結果を報告します

依存関係の追加

テスト設定にJUnit Jupiterを追加し、JUnitプラットフォームを有効にします。

dependencies {
    testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
}

tasks.test {
    useJUnitPlatform()
}

最初のテスト

関数に@Testを付けます。テストでは、コードについて何らかのアサーションを行います。

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

class MathTest {
    @Test
    fun addsTwoNumbers() {
        assertEquals(4, 2 + 2)
    }
}

わかりやすいテスト名

@DisplayNameを使用すると、関数名を長くしなくても読みやすいテストレポートを作成できます。

import org.junit.jupiter.api.Test
import org.junit.jupiter.api.DisplayName

class OrderTest {
    @Test
    @DisplayName("total includes tax")
    fun totalWithTax() {
        // ...
    }
}

@BeforeEachによるセットアップ

@BeforeEachは各テストの前に実行されるため、毎回新しいフィクスチャを用意するのに適しています。@AfterEachは各テストの後に実行され、後片付けに使用します。

import org.junit.jupiter.api.BeforeEach

class CartTest {
    private lateinit var cart: MutableList<String>
    @BeforeEach
    fun setUp() {
        cart = mutableListOf()
    }
}

クラスレベルのセットアップ

@BeforeAllと@AfterAllは、クラス全体に対して一度だけ実行されます。Kotlinでは、@JvmStaticを付けたコンパニオンオブジェクト(またはクラス単位のライフサイクル)が必要です。

import org.junit.jupiter.api.BeforeAll

class DbTest {
    companion object {
        @BeforeAll
        @JvmStatic
        fun connect() {
            // open shared connection
        }
    }
}

Arrange-Act-Assert

各テストを、明確な3つのフェーズに分けて構成します。

  • Arrange(準備) — 入力と状態を準備します
  • Act(実行) — テスト対象のコードを呼び出します
  • Assert(検証) — 結果を検証します

これにより、テストを読みやすく、目的の明確なものにできます。

ネストしたテスト

@Nestedを使うと、関連するテストをグループ化できます。動作を記録したツリー構造のレポートが生成されます。

import org.junit.jupiter.api.Nested
import org.junit.jupiter.api.Test

class StackTest {
    @Nested
    inner class WhenEmpty {
        @Test fun isEmpty() { /* ... */ }
    }
}

パラメーター化テスト

@ParameterizedTestと値ソースを使用すると、複数の入力で同じテストを実行できます。

import org.junit.jupiter.params.ParameterizedTest
import org.junit.jupiter.params.provider.ValueSource
import org.junit.jupiter.api.Assertions.assertTrue

class NumberTest {
    @ParameterizedTest
    @ValueSource(ints = [2, 4, 6])
    fun isEven(n: Int) {
        assertTrue(n % 2 == 0)
    }
}

無効化とタグ付け

@Disabledを使うとテストを一時的にスキップでき、@Tagを使うとテストをグループ化して、CI実行時に含めたり除外したりできます。

import org.junit.jupiter.api.Disabled
import org.junit.jupiter.api.Tag
import org.junit.jupiter.api.Test

class FlakyTest {
    @Test
    @Disabled("fix later")
    @Tag("slow")
    fun pending() { }
}

自己完結型の例

ここでは、シンプルな純粋Kotlin関数と、それをテストする考え方を示します(テスト自体はJUnit上で実行されます)。

fun add(a: Int, b: Int): Int = a + b

fun main() {
    val result = add(2, 3)
    println(if (result == 5) "PASS" else "FAIL")
}

簡単な確認

各テストメソッドの前に、毎回新しい空のリストが必要です。どのアノテーションが適しているでしょうか。

まとめ

JUnit5のテストを次のように構成できます。

  • @Testでテストを示し、@DisplayNameで名前を付けます
  • @BeforeEach / @BeforeAllでセットアップを処理します
  • Arrange-Act-Assertでテストを明確に保ちます
  • @Nestedと@ParameterizedTestでテストを整理し、拡張します

次はアサーションです。

よくある質問

「JUnit5でテストを書く」レッスンは無料ですか?

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

「JUnit5でテストを書く」で何を学びますか?

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

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

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

「JUnit5でテストを書く」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

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