2018年9月6日木曜日

[AssertJ]JUnit5拡張のsoft assertions

AssertJ 3.11.0から追加されたJUnit5拡張のsoft assertionsを試してみる。

AssertJを依存ライブラリに追加する

バージョンは、3.11.0以降を指定する必要があります。
testCompile 'org.assertj:assertj-core:3.11.1'

soft assertionsを使ってみる

実装すればいいことは、以下の2点ですね。
org.assertj.core.api.SoftAssertions.SoftAssertionsのときは、assertAllを呼び出す必要があったけどそれが不要になりますね。
  • JUnitJupiterSoftAssertionsをフィールドに定義して@RegisterExtensionを設定する
  • JUnitJupiterSoftAssertionsのassertThatを使ってアサーションを行う

public class SampleTest {
    
    @RegisterExtension
    public final JUnitJupiterSoftAssertions softly = new JUnitJupiterSoftAssertions();

    @Test
    void test() {
        softly.assertThat(5)
              .isEqualTo(1);
        softly.assertThat("hoge")
              .isEqualTo("fuga");
    }
}

実行結果

複数箇所でアサーションに失敗した場合でも、それぞれの結果が表示されますね。
Expected :1
Actual   :5
 <Click to see difference>

Expected :fuga
Actual   :hoge
 <Click to see difference>