Spring Boot: тестирование, определение типа веб-приложения, определение конфигурации теста

Определение типа веб-приложения

Если Spring MVC доступен, настраивается обычный контекст приложения MVC. Если у вас есть только Spring WebFlux, настроится контекст приложения на основе WebFlux.

Если оба присутствуют, Spring MVC имеет приоритет. Если вы хотите протестировать реактивное веб-приложение в этом сценарии, вы должны установить свойство spring.main.web-application-type:

@SpringBootTest(properties = "spring.main.web-application-type=reactive")
class MyWebFluxTests { ... }

Определение конфигурации теста

Если вы знакомы с Spring Test Framework, вы можете использовать @ContextConfiguration(classes=…), чтобы указать, какой Spring @Configuration загрузить. В качестве альтернативы вы могли часто использовать вложенные классы @Configuration в своем тесте.

При тестировании приложений Spring Boot это часто не требуется. @*Test аннотации Spring Boot автоматически ищут вашу основную конфигурацию, если вы ее явно не определяете.

Алгоритм поиска работает из пакета, который содержит тест, пока не найдет класс, аннотированный @SpringBootApplication или @SpringBootConfiguration. Пока вы структурируете свой код разумным образом, ваша основная конфигурация обычно находится.

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

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

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

Spring Test Framework кэширует контексты приложения между тестами. Следовательно, если ваши тесты используют одну и ту же конфигурацию (независимо от того, как она обнаружена), потенциально длительный процесс загрузки контекста происходит только один раз.


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


Комментарии

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

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

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

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