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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- JUnit5でテストを書く
- アサーション
- MockKによるモック
- コルーチンのテスト