Интеграционное тестирование в Spring: TestContext Framework, конфигурация контекста - смешивание XML, скриптов Groovy и классов компонентов

Иногда может быть желательно смешивать файлы конфигурации XML, сценарии Groovy и классы компонентов (обычно классы @Configuration) для настройки ApplicationContext для ваших тестов. Например, если вы используете конфигурацию XML в производственной среде, вы можете решить, что хотите использовать классы @Configuration для настройки определенных компонентов, управляемых Spring, для ваших тестов, или наоборот.

Кроме того, некоторые сторонние платформы (например, Spring Boot) предоставляют первоклассную поддержку для одновременной загрузки ApplicationContext из разных типов ресурсов (например, файлов конфигурации XML, сценариев Groovy и классов @Configuration). Spring Framework исторически не поддерживала это для стандартных развертываний. Следовательно, большинство реализаций SmartContextLoader, которые Spring Framework предоставляет в модуле spring-test, поддерживают только один тип ресурса для каждого контекста теста. Однако это не означает, что вы не можете использовать оба. Единственным исключением из общего правила является то, что GenericGroovyXmlContextLoader и GenericGroovyXmlWebContextLoader одновременно поддерживают как файлы конфигурации XML, так и сценарии Groovy. Кроме того, сторонние платформы могут выбрать поддержку объявления как местоположений, так и классов через @ContextConfiguration, и при стандартной поддержке тестирования в TestContext framework у вас есть следующие варианты.

Если вы хотите использовать расположения ресурсов (например, XML или Groovy) и классы @Configuration для настройки ваших тестов, вы должны выбрать один в качестве точки входа, а другой должен включать или импортировать. Например, в сценарии XML или Groovy вы можете включать классы @Configuration, используя сканирование компонентов или определяя их как обычные компоненты Spring, тогда как в классе @Configuration вы можете использовать @ImportResource для импорта файлов конфигурации XML или сценариев Groovy. Обратите внимание, что это поведение семантически эквивалентно тому, как вы настраиваете свое приложение в производственной среде: в производственной конфигурации вы определяете либо набор местоположений ресурсов XML или Groovy, либо набор классов @Configuration, из которых загружается ваш производственный ApplicationContext, но у вас все еще есть свобода включать или импортировать другой тип конфигурации.


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


Комментарии

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

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

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

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