Параметризованный тест с двумя аргументами в Юпитере 5 Юпитер - PullRequest
0 голосов
/ 28 апреля 2020

Как мне написать параметризованный тест с двумя аргументами в JUnit 5 jupiter? Следующее не работает (ошибка компиляции):

@ParameterizedTest
@ValueSource(strings = { "a", "b", "foo" })
@ValueSource(ints = { 1, 2, 3 })
public void test(String arg1, int arg2) {...}

1 Ответ

1 голос
/ 28 апреля 2020

Вот две возможности для выполнения этих вызовов метода с несколькими аргументами.

Первый ( testParameters ) использует CsvSource , для которого вы предоставляете разделенный запятыми список (разделитель настраивается), и приведение типа выполняется автоматически для вашего теста параметры метода.

Второй ( testParametersFromMethod ) использует метод ( provideParameters ) для предоставления необходимых данных.

@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)
    );
}

Вывод этих методов испытаний:

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
...