JUnit 5検証 - Assertion
Assertion
JUnit 5はAssertionsというアサーションクラスを提供する。Assertionは、提供されるメソッドを使ってテストで検証したい値や動作を確認する機能である。
値検証Assertion
JUnitには基本的なアサーションメソッドが用意されている。
assertEquals
assertEquals(expected, actual, {message})は、実際の値が期待値と同じかを確認する。
assertNull(actual)
assertNull(actual, {message})は、値がnullかどうかを確認する。
assertNotNull(actual)
assertNotNull(actual, {message})は、値がnullではないかを確認する。
assertTrue(boolean)
assertTrue(actual, {message})は、条件がtrueかを確認する。
assertFalse(boolean)
assertFalse(actual, {message})は、条件がfalseかを確認する。
便利なAssertion
値検証のためのメソッド以外にも、便利なメソッドが用意されている。
assertAll(executable...)
assertAllは複数のアサーションをまとめて実行する。通常のアサーションを連続して書くと、前のアサーションが失敗した時点で次のテストは実行されないため、後続の失敗が分からない。assertAllを使うと、全体の結果を確認できる。
assertThrows(expectedType, executable)
assertThrowsは例外が発生するかを確認できる。返された例外を使って、例外メッセージが同じかどうかも確認できる。
assertTimeout(duration, executable)
assertTimeoutは、指定時間内に実行が完了するかを確認する。第2引数のラムダ式が終了するとテストも終了する。
assertTimeoutPreemptively(duration, executable)
assertTimeoutPreemptivelyも指定時間内に実行が完了するかを確認する。assertTimeoutとの違いは、assertTimeoutは処理終了まで待つのに対し、assertTimeoutPreemptivelyは指定時間を過ぎるとテストを直ちに終了する点である。
他のAssertionライブラリ
JUnit 5では他のアサーションライブラリも使用できる。AssertJやHamcrestなどを依存ライブラリに追加すれば、JUnit 4のときと同じように利用できる。
AssertJ
AssertJはメソッドチェーンをサポートしているため、よりきれいで読みやすいテストコードを書ける。使用するにはorg.assertj:assertj-coreをテスト依存関係に追加する。