Интеграционное тестирование в Spring: аннотации Spring Testing, @WebAppConfiguration, @ContextHierarchy
@WebAppConfiguration
@WebAppConfiguration - это аннотация уровня класса, которую можно использовать для объявления, что ApplicationContext, загруженный для интеграционного теста, должен быть WebApplicationContext. Простое присутствие @WebAppConfiguration в тестовом классе гарантирует, что WebApplicationContext будет загружен для теста с использованием значения по умолчанию "file:src/main/webapp" для пути к корню веб-приложения (то есть базовый путь ресурса). Базовый путь ресурса используется негласно для создания MockServletContext, который служит в качестве ServletContext для WebApplicationContext теста.
В следующем примере показано, как использовать аннотацию @WebAppConfiguration:
@ContextConfiguration
@WebAppConfiguration
class WebAppTests {
// тело класса...
}
Чтобы переопределить значение по умолчанию, вы можете указать другой базовый путь ресурса, используя неявно атрибут значения. Поддерживаются как префиксы ресурса classpath:, так и file:. Если префикс ресурса не указан, предполагается, что путь является ресурсом файловой системы. В следующем примере показано, как указать ресурс пути к классам:
@ContextConfiguration
@WebAppConfiguration("classpath:test-web-resources")
class WebAppTests {
// тело класса...
}
Обратите внимание, что @WebAppConfiguration необходимо использовать вместе с @ContextConfiguration, либо в одном тестовом классе, либо в иерархии тестовых классов.
@ContextHierarchy
@ContextHierarchy - это аннотация уровня класса, которая используется для определения иерархии экземпляров ApplicationContext для интеграционных тестов. @ContextHierarchy следует объявлять со списком из одного или нескольких экземпляров @ContextConfiguration, каждый из которых определяет уровень в иерархии контекста. Следующие примеры демонстрируют использование @ContextHierarchy в одном тестовом классе (@ContextHierarchy также может использоваться в иерархии тестовых классов):
@ContextHierarchy({
@ContextConfiguration("/parent-config.xml"),
@ContextConfiguration("/child-config.xml")
})
class ContextHierarchyTests {
// тело класса...
}
@WebAppConfiguration
@ContextHierarchy({
@ContextConfiguration(classes = AppConfig.class),
@ContextConfiguration(classes = WebConfig.class)
})
class WebIntegrationTests {
// тело класса...
}
Если вам нужно объединить или переопределить конфигурацию для данного уровня иерархии контекста в иерархии тестовых классов, вы должны явно назвать этот уровень, указав то же значение для атрибута имени в @ContextConfiguration на каждом соответствующем уровне в иерархии классов.
Читайте также:
- Интеграционное тестирование в Spring: аннотации Spring Testing
- Интеграционное тестирование в Spring: цели, вспомогательные классы
- Интеграционное тестирование в Spring: поддержка тестирования JDBC
Комментарии
Отправить комментарий