Интеграционное тестирование в Spring: TestContext Framework, конфигурация контекста с помощью скриптов Groovy

Чтобы загрузить ApplicationContext для ваших тестов с помощью скриптов Groovy, которые используют Groovy Bean Definition DSL, вы можете аннотировать свой тестовый класс с помощью @ContextConfiguration и настроить атрибут местоположений или значения с помощью массива, который содержит местоположения ресурсов скриптов Groovy. Семантика поиска ресурсов для сценариев Groovy такая же, как и для файлов конфигурации XML.

Включение поддержки скриптов Groovy

Поддержка использования скриптов Groovy для загрузки ApplicationContext в Spring TestContext Framework включается автоматически, если Groovy находится в пути к классам.

В следующем примере показано, как указать файлы конфигурации Groovy:

@ExtendWith(SpringExtension.class)
// ApplicationContext будет загружен 
// из "/AppConfig.groovy" и
// "/TestConfig.groovy" в корне пути к классам
@ContextConfiguration({"/AppConfig.groovy", "/TestConfig.Groovy"}) 
class MyTest {
    // тело класса...
}

Если в аннотации @ContextConfiguration опустить атрибуты location и value, TestContext framework попытается обнаружить сценарий Groovy по умолчанию. В частности, GenericGroovyXmlContextLoader и GenericGroovyXmlWebContextLoader определяют расположение по умолчанию на основе имени тестового класса. Если ваш класс называется com.example.MyTest, загрузчик контекста Groovy загружает контекст вашего приложения из "classpath:com/example/MyTestContext.groovy". В следующем примере показано, как использовать значение по умолчанию:

@ExtendWith(SpringExtension.class)
// ApplicationContext будет загружен из
// "classpath:com/example/MyTestContext.groovy"
@ContextConfiguration 
class MyTest {
    // тело класса...
}

Одновременное объявление конфигурации XML и скриптов Groovy

Вы можете объявить как файлы конфигурации XML, так и сценарии Groovy одновременно, используя атрибут location или value @ContextConfiguration. Если путь к настроенному расположению ресурса заканчивается на .xml, он загружается с помощью XmlBeanDefinitionReader. В противном случае он загружается с помощью GroovyBeanDefinitionReader.

В следующем листинге показано, как объединить и то, и другое в интеграционном тесте:

@ExtendWith(SpringExtension.class)
// ApplicationContext будет загружен из
// "/app-config.xml" и "/TestConfig.groovy"
@ContextConfiguration({ "/app-config.xml", "/TestConfig.groovy" })
class MyTest {
    // тело класса...
}


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


Комментарии

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

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

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

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