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

Чтобы загрузить ApplicationContext для ваших тестов с помощью файлов конфигурации XML, аннотируйте свой тестовый класс с помощью @ContextConfiguration и настройте атрибут location с помощью массива, который содержит местоположения ресурсов метаданных конфигурации XML. Простой или относительный путь (например, context.xml) обрабатывается как ресурс пути к классам, относящийся к пакету, в котором определен тестовый класс. Путь, начинающийся с косой черты, рассматривается как абсолютное расположение пути к классам (например, /org/example/config.xml). Путь, представляющий URL-адрес ресурса (т.е. путь с префиксом classpath:, file:, http: и т.д.), используется как есть.

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

@ContextConfiguration поддерживает псевдоним для атрибута location через стандартный атрибут значения Java. Таким образом, если вам не нужно объявлять дополнительные атрибуты в @ContextConfiguration, вы можете опустить объявление имени атрибута location и объявить местоположения ресурсов, используя сокращенный формат, показанный в следующем примере:

@ExtendWith(SpringExtension.class)
@ContextConfiguration({"/app-config.xml", "/test-config.xml"}) 
class MyTest {
    // тело класса...
}

Если вы опустите в аннотации @ContextConfiguration как местоположения, так и атрибуты значения, TestContext framework попытается определить местоположение ресурса XML по умолчанию. В частности, GenericXmlContextLoader и GenericXmlWebContextLoader определяют расположение по умолчанию на основе имени тестового класса. Если ваш класс называется com.example.MyTest, GenericXmlContextLoader загружает контекст вашего приложения из "classpath:com/example/MyTest-context.xml". В следующем примере показано, как это сделать:

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


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


Комментарии

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

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

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

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