Как использовать @MethodSource, определенный в другом классе в JUnit 5

Есть ли способ использовать @MethodSource использовать метод, определенный в другом классе?

Например, приведенный ниже код работает, как stringProvider Метод определен в том же классе.

 @ParameterizedTest
    @MethodSource("stringProvider")
    void methodSourceFromOtherClass(String word)
    {
        System.out.println(word);
        assertNotNull(word);
    }

public static Stream<Arguments> stringProvider()
    {
        return Stream.of(
                Arguments.of("Values"),
                Arguments.of("From"),
                Arguments.of("MethodSource"));

    }

У меня есть несколько служебных классов, которые предоставляют тестовые данные. Как я могу использовать метод из внешних классов в @methodSource?

2 ответа

Решение

Синтаксис для ссылки на методы из внешних классов

@MethodSource("fullyQualifiedClassName#methodName")

например

@ParameterizedTest
@MethodSource("com.niraj.DataProvider#stringProvider")
void methodSourceFromOtherClass(String word) {
    System.out.println(word);
    assertNotNull(word);
}

Имена фабричных методов внутри тестового класса или во внешних классах, которые будут использоваться в качестве источников аргументов.

Фабричные методы во внешних классах должны ссылаться на полное имя метода, например.

Если имена фабричных методов не объявлены, метод внутри тестового класса, имеющий то же имя, что и тестовый метод, будет использоваться в качестве фабричного метода по умолчанию - например.

Другие вопросы по тегам