TL;DR
1 つのテスト関数に複数のパラメータを渡して、入力ごとにテストを行う手法。
仕組み
JUnit のユーザガイドによると、パラメータ化テストは、1 つのテストメソッドを異なる引数で何度も実行する仕組みである。JUnit では @Test の代わりに @ParameterizedTest を付け、各実行に引数を渡すソースを少なくとも 1 つ宣言する。ソースには、値の配列を渡す @ValueSource、CSV 形式で書く @CsvSource、引数を返すファクトリメソッドを指定する @MethodSource などがある。
例
JUnit で、回文かどうかを 3 つの文字列で確かめる例。値ごとに別の実行として扱われる。
@ParameterizedTest
@ValueSource(strings = { "racecar", "radar", "able was I ere I saw elba" })
void palindromes(String candidate) {
assertTrue(StringUtils.isPalindrome(candidate));
}多くの言語のテスティングフレームワークが対応している。
- JUnit(Java)
- rstest(Rust)
- Jest(JavaScript / TypeScript)