Parameter Test
Sebelumnya kita sudah tau jika ingin menambahkan parameter di function unit test, maka kita perlu membuat ParameterResolver. Namun jika terlalu banyak membuat ParameterResolver juga agak menyulitkan kita. JUnit memiliki fitur yang bernama @ParameterizedTest, dimana jenis unit test ini memang khusus dibuat agar dapat menerima parameter
Yang perlu kita lakukan adalah dengan mengganti @Test menjadi @ParameterizedTest.
Sumber Parameter
@ParameterizedTest mendukung beberapa sumber parameter, yaitu:
@ValueSource, untuk sumberNumber,Char,BooleandanString.@EnumSource, untuk sumber berupaenum.@MethodSource, untuk sumber dari static method.@CsvSource, untuk sumber beruba data CSV.@CsvFileSource, untuk sumber beruba file CSV.@ArgumentSource, untuk data dari classArgumentProvider.
// Parameter Test
@DisplayName("Test Calculator Parameter Test")
@ParameterizedTest(name = "{displayName} dengan parameter {0}")
@ValueSource(ints = {2, 4, 6, 8})
void withTestParameter(int value) {
var expect = value + value;
var result = calculator.add(value, value);
Assertions.assertEquals(expect, result);
}
Parameter dari Method lain menggunakan @MethodSource
// Parameter Test dengan source dari method lain
// harus static
public static List<Integer> parameterSouce() {
return List.of(1, 3, 5, 7, 9);
}
@DisplayName("Test Calculator Parameter Test dengan Method Source")
@ParameterizedTest(name = "{displayName} dengan parameter {0}")
@MethodSource({"parameterSouce"})
void withTestMethodSource(int value) {
var expect = value + value;
var result = calculator.add(value, value);
Assertions.assertEquals(expect, result);
}