アサーション
動作を検証します
「アサーション」は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/assertFalseassertNull/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フィードバックを取得できます。ローカル設定は不要です。