Parametrisierter Test mit zwei Argumenten in JUnit 5 Jupiter

Lesezeit: 1 Minute

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

  • Danke vielmals. Gibt es eine Möglichkeit, das Kreuzprodukt (“a,1″,”a,2″,”a,3″,”b,1″,”b,2”,…) zu testen, ohne jede Kombination zu schreiben?

    – rüdeste

    28. April 2020 um 16:16 Uhr

  • Dafür wird der methodische Ansatz die Arbeit erledigen. In „provideParameters“ können Sie jede gewünschte Kombination aufbauen.

    – wumpz

    29. April 2020 um 5:33 Uhr


  • @ruediste Dazu gibt es bereits ein Problem: github.com/junit-team/junit5/issues/1427.

    – eee

    3. Mai 2020 um 9:41 Uhr

1441260cookie-checkParametrisierter Test mit zwei Argumenten in JUnit 5 Jupiter

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy