Как использовать @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);
}
Имена фабричных методов внутри тестового класса или во внешних классах, которые будут использоваться в качестве источников аргументов.
Фабричные методы во внешних классах должны ссылаться на полное имя метода, например
Если имена фабричных методов не объявлены, метод внутри тестового класса, имеющий то же имя, что и тестовый метод, будет использоваться в качестве фабричного метода по умолчанию - например