Spring Boot: тестирование, исключение тестовой конфигурации, использование аргументов приложения

Исключение тестовой конфигурации

Если ваше приложение использует компонентное сканирование (например, если вы используете @SpringBootApplication или @ComponentScan), вы можете найти классы конфигурации верхнего уровня, которые вы создали только для определенных тестов, случайно обнаруженные везде.

@TestConfiguration может использоваться во внутреннем классе теста для настройки первичной конфигурации. При размещении в классе верхнего уровня, @TestConfiguration указывает, что классы в src/test/java не должны выбираться при сканировании. Затем вы можете импортировать этот класс явно, где это требуется, как показано в следующем примере:

@SpringBootTest
@Import(MyTestsConfiguration.class)
class MyTests {

    @Test
    void exampleTest() {
        ...
    }

}

Если вы напрямую используете @ComponentScan (то есть не через @SpringBootApplication), вам необходимо зарегистрировать в нем TypeExcludeFilter.

Использование аргументов приложения

Если ваше приложение ожидает аргументы, вы можете сделать так, чтобы @SpringBootTest вставлял их, используя атрибут args.

@SpringBootTest(args = "--app.test=one")
class ApplicationArgumentsExampleTests {

    @Test
    void applicationArgumentsPopulated(@Autowired ApplicationArguments args) {
        assertThat(args.getOptionNames()).containsOnly("app.test");
        assertThat(args.getOptionValues("app.test")).containsOnly("one");
    }

}


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки