JUnitのテストでDisplayNameを使い、わかりやすいテストを書こう

こんにちは。 エキサイト株式会社の三浦です。

皆さん、JUnitユニットテストを書いていますか? 今回は、@DisplayNameを使うことによってJUnitユニットテストの可読性が上がるという話です。

ユニットテストの可読性の問題点

ユニットテストは、テスト対象が複雑になるほどコード量が多くなっていきます。 それは、検証するパターンが多かったり、テストのために用意するモデルやモックが増えていくためですが、その結果各ユニットテストのメソッドが何のテストなのか、ぱっと見ただけではわからなくなることがあります。

今回はそれを、DisplayNameというアノテーションを使うことで解決していきます。

DisplayNameの使い方と効果

DisplayNameの使い方は簡単で、テストメソッドにアノテーションとしてつけるだけです。

@ExtendWith(MockitoExtension.class)
public class SampleTest {

    @Test
    @DisplayName("サンプルテスト")
    void sample() {
        Assertions.assertEquals(
                true,
                true,
                "必ず成功する"
        );
    }
}

好きな文字列でテストメソッドに名前をつけることができるようになり、可読性が上がったかと思います。 また、テストに失敗した場合、

@ExtendWith(MockitoExtension.class)
public class SampleTest {

    @Test
    @DisplayName("サンプルテスト")
    void sample() {
        Assertions.assertEquals(
                true,
                false,
                "必ず成功する"
        );
    }
}

以下のようにログを表示してくれるため、失敗したメソッドを探し出すのも簡単になります。

SampleTest > サンプルテスト FAILED

最後に

ちょっとしたことですが、ぱっと見ただけで何をしているかわかるというのは非常に良いことです。 ぜひ使ってみてください。