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
,Boolean
danString
.@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);
}