Spring-boot - Параметризованный тест - Доступ к Application.properties в MethodSource - PullRequest
0 голосов
/ 13 мая 2019

При записи ParameterizedTest с пружинной загрузкой можно указать MethodSource, который предоставляет значения. MethodSource - это статический метод, который означает, что доступ к значениям и элементам с автосвязью невозможен.

Я определяю значение в application.properties, которое имеет решающее значение для настройки параметров (оно указывает на каталог, содержащий данные, которые мне нужны). Как я могу получить доступ к значению в статическом методе?

пример кода:

application.properties:

com.example.directorypath=a/b/c

ApplicationTest:

@ActiveProfiles("dev")
@RunWith(SpringRunner.class)
@SpringBootTest
public class RdxApplicationTests {

    @Value("${com.example.directorypath}")
    private String directory;

    @ParameterizedTest
    @MethodSource("provideDirectories")
    public void test(File dir){
        System.out.println(dir);
    }

    private static Stream<Arguments> provideDirectories(){
        //here is the place I need the value
        File f = new File(directory);

        return Arrays.stream(Objects.requireNonNull(f.listFiles())).map(Arguments::of);

    }
}

1 Ответ

0 голосов
/ 14 мая 2019

Способ решения проблемы статических фабричных методов заключается в следующем:

Аннотируйте тестовый класс с помощью @TestInstance(TestInstance.Lifecycle.PER_CLASS), что позволяет фабричным методам в тестовом классе не быть статичными.

Аннотация представляет собой аннотацию JUnit5.

Источник: MethodSource

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...