Wie kann ich einen parametrisierten Test mit zwei Argumenten in JUnit 5 Jupiter schreiben? Folgendes funktioniert nicht (Kompilierungsfehler):
@ParameterizedTest
@ValueSource(strings = { "a", "b", "foo" })
@ValueSource(ints = { 1, 2, 3 })
public void test(String arg1, int arg2) {...}
Hier sind zwei Möglichkeiten, um diese Testmethodenaufrufe mit mehreren Argumenten zu erreichen.
Der Erste (testParameter) verwendet a CsvSource für die Sie eine durch Kommas getrennte Liste bereitstellen (das Trennzeichen ist konfigurierbar) und die Typumwandlung für Ihre Testmethodenparameter automatisch erfolgt.
Der Zweite (testParametersFromMethod) verwendet eine Methode (Parameter bereitstellen), um die erforderlichen Daten bereitzustellen.
@ParameterizedTest
@CsvSource({"a,1", "b,2", "foo,3"})
public void testParameters(String name, int value) {
System.out.println("csv data " + name + " value " + value);
}
@ParameterizedTest
@MethodSource("provideParameters")
public void testParametersFromMethod(String name, int value) {
System.out.println("method data " + name + " value " + value);
}
private static Stream<Arguments> provideParameters() {
return Stream.of(
Arguments.of("a", 1),
Arguments.of("b", 2),
Arguments.of("foo", 3)
);
}
Die Ausgabe dieser Testmethoden sind:
Running ParameterTest
csv data a value 1
csv data b value 2
csv data foo value 3
method data a value 1
method data b value 2
method data foo value 3