1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

記事投稿キャンペーン 「2024年!初アウトプットをしよう」

JUnitのパラメーター化テストでパラメーターに名前を付ける方法

Last updated at Posted at 2024-01-14

JUnitにはパラメーター化テストを実施したい場合に便利な機能があります。
以下のように@ParameterizedTest@ValueSourceを付けてパラメーターを指定することで、一つのメソッドで指定したパラメーターをテストすることができます。

ValueSource

    @ParameterizedTest
    @ValueSource(strings = {"0311111111", "08011111111"})
    public void phoneNumber_is_10_11_digits(String phoneNumber) {
        assertTrue(isPhoneNumber(phoneNumber));
    }

テスト結果:
image.png

しかし、このやり方ではパラメーターの値しか指定されていないため、パッと見て何をテストしているのかが判断できません。
パラメーターに説明などを付け加えて分かりやすいテストを書いていきたいです。

そこで、以下のように@ValueSourceの代わりに@MethodSourceを付けて、パラメーターに名前を指定したメソッドのメソッド名を指定することで、テストコードを見てどのようなパラメーターをテストしているかがわかりやすくなります。

MethodSource

    @ParameterizedTest
    @MethodSource("phoneNumberProvider")
    public void phoneNumber_is_10_11_digits(String phoneNumber) {
        assertTrue(isPhoneNumber(phoneNumber));
    }

    static Stream<Arguments> phoneNumberProvider() {
        return Stream.of(
                arguments(Named.of("10桁の固定電話番号", "0311111111")),
                arguments(Named.of("11桁の携帯電話番号", "08011111111"))
        );
    }

テスト結果:
image.png

テスト結果もわかりやすくなりました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?