Junit5 параметризованный тест с функцией - PullRequest
0 голосов
/ 16 января 2020

Я хочу создать параметризованный тест, одной из переменных которого является функция (или то, что она должна возвращать).

Я создал класс ArgumentsProvider (мог бы сделать то же самое с MethodSource, но проблема та же).

Вот как это выглядит, когда 2-й параметр является жестко заданной строкой:

class UsersEventsControllerArgumentsProvider implements ArgumentsProvider {

  @Override
  public Stream<? extends Arguments> provideArguments(ExtensionContext context) {
    return Stream.of(
        arguments("/user/event/firstEvent", "EventIdFromConf_1"),
        arguments("/user/event/secondEvent", "EventIdFromConf_2"),
        arguments("/user/event/thirdEvent", "EventIdFromConf_3")
    );
  }
}

Однако я хочу, чтобы второй параметр был взят из класс @Configuration, который у меня есть. (EventsConfiguration помечена @Configuration и имеет соответствующие методы получения)

Вот что я пытался сделать:

class UsersEventsControllerArgumentsProvider implements ArgumentsProvider {

  @Override
  public Stream<? extends Arguments> provideArguments(ExtensionContext context) {
    return Stream.of(
        arguments("/user/event/firstEvent", EventsConfiguration::getFirstEventId_1),
        arguments("/user/event/secondEvent", EventsConfiguration::getFirstEventId_2),
        arguments("/user/event/thirdEvent", EventsConfiguration::getFirstEventId_3)
    );
  }
}

Я получаю ошибку компиляции: Object is not a functional interface

Мой вопрос:

Есть ли способ передать функцию в параметризованный тест?

Или, может быть, есть другой способ сделать это? (Я не хочу иметь жестко запрограммированные переменные)

...