@ParameterizedTestは指定のテストメソッドに違う引数を順番に渡して処理することで、複数のテストを実現する方法。
JUnit5の新しい機能として、使うとき以下のパッケージを依存関係に追加する必要がある。

1
org.junit.jupiter:junit-jupiter-params

使ってみる

@ParameterizedTestでパラメーター指定のテストケースを声明する。そして@ValueSourceを利用してパラメーターを指定する(整数:1,2,3)。

1
2
3
4
5
@ParameterizedTest
@ValueSource(ints = {1, 2, 3})
void test(int i) {
System.out.println(i);
}

これで1つのメソッドでテストを3回実行した。
@ParameterizedTestorg.junit.jupiter.params.providerパッケージ下のインタフェースと一緒に使う必要がある。

DisplayName of ParameterizedTest

@ParameterizedTestはパラメーターごとにテストケースを命名できる。

1
2
3
4
5
6
@ParameterizedTest(name = "input is {0} {1} {2}")
@CsvSource(value = {"1,a,true"})
void test(int a, String b, boolean c) {

}

使えるplaceholderは以下となる。

  • {index} テストケースの番号
  • {0~n} 指定番号の引数の値(0から)
  • {arguments} 全ても引数
  • {displayName} @DisplayNameで指定する内容、@DisplayNameがない場合はテストメソッドの名前