Интеграционное тестирование в Spring: TestContext Framework, конфигурация контекста с классами компонентов
Чтобы загрузить ApplicationContext для ваших тестов с помощью классов компонентов, вы можете аннотировать свой тестовый класс с помощью @ContextConfiguration и настроить атрибут классов с помощью массива, содержащего ссылки на классы компонентов. В следующем примере показано, как это сделать:
@ExtendWith(SpringExtension.class)
// ApplicationContext будет загружен из
// AppConfig и TestConfig
@ContextConfiguration(classes = {AppConfig.class, TestConfig.class})
class MyTest {
// тело класса...
}
Компонентные классы
Термин "класс компонента" может относиться к любому из следующего:
- Класс, помеченный @Configuration.
- Компонент (то есть класс с аннотациями @Component, @Service, @Repository или другими стереотипными аннотациями).
- Класс, совместимый с JSR-330, снабженный аннотациями javax.inject.
- Любой класс, содержащий @Bean-методы.
- Любой другой класс, который предназначен для регистрации в качестве компонента Spring (т.е. Bean-компонента Spring в ApplicationContext), потенциально использующий преимущества автоматического связывания одного конструктора без использования аннотаций Spring.
Если вы опустите атрибут classes в аннотации @ContextConfiguration, TestContext framework попытается обнаружить наличие классов конфигурации по умолчанию. В частности, AnnotationConfigContextLoader и AnnotationConfigWebContextLoader обнаруживают все статические вложенные классы тестового класса, которые соответствуют требованиям для реализаций классов конфигурации. Обратите внимание, что имя класса конфигурации произвольно. Кроме того, при желании тестовый класс может содержать более одного статического вложенного класса конфигурации. В следующем примере класс OrderServiceTest объявляет статический вложенный класс конфигурации с именем Config, который автоматически используется для загрузки ApplicationContext для тестового класса:
@SpringJUnitConfig
// ApplicationContext будет загружен из
// статического вложенного класса Config
class OrderServiceTest {
@Configuration
static class Config {
// этот bean-компонент будет внедрен
// в класс OrderServiceTest
@Bean
OrderService orderService() {
OrderService orderService =
new OrderServiceImpl();
// устанавливаем свойства и т.д.
return orderService;
}
}
@Autowired
OrderService orderService;
@Test
void testOrderService() {
// тестируем orderService
}
}
Читайте также:
- Интеграционное тестирование в Spring: TestContext Framework, конфигурация контекста с помощью скриптов Groovy
- Интеграционное тестирование в Spring: TestContext Framework, управление контекстом
- Интеграционное тестирование в Spring: TestContext Framework, конфигурация контекста с ресурсами XML
Комментарии
Отправить комментарий