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

Каждый TestContext обеспечивает управление контекстом и поддержку кеширования для тестового экземпляра, за который он отвечает. Экземпляры тестов не получают автоматически доступ к настроенному ApplicationContext. Однако, если тестовый класс реализует интерфейс ApplicationContextAware, ссылка на ApplicationContext предоставляется экземпляру теста. Обратите внимание, что AbstractJUnit4SpringContextTests и AbstractTestNGSpringContextTests реализуют ApplicationContextAware и, следовательно, автоматически предоставляют доступ к ApplicationContext.

@Autowired ApplicationContext

В качестве альтернативы реализации интерфейса ApplicationContextAware вы можете внедрить контекст приложения для своего тестового класса с помощью аннотации @Autowired либо в поле, либо в методе установки, как показано в следующем примере:

@SpringJUnitConfig
class MyTest {

    @Autowired 
    ApplicationContext applicationContext;

    // тело класса...
}

Точно так же, если ваш тест настроен на загрузку WebApplicationContext, вы можете вставить контекст веб-приложения в свой тест следующим образом:

@SpringJUnitWebConfig 
class MyWebAppTest {

    @Autowired 
    WebApplicationContext wac;

    // тело класса...
}

Внедрение зависимостей с помощью @Autowired предоставляется DependencyInjectionTestExecutionListener, который настроен по умолчанию.

Тестовые классы, использующие структуру TestContext, не нуждаются в расширении какого-либо конкретного класса или реализации определенного интерфейса для настройки контекста своего приложения. Вместо этого конфигурация достигается путем объявления аннотации @ContextConfiguration на уровне класса. Если ваш тестовый класс не объявляет явно расположение ресурсов контекста приложения или классы компонентов, настроенный ContextLoader определяет, как загрузить контекст из расположения по умолчанию или классов конфигурации по умолчанию. В дополнение к расположению ресурсов контекста и классам компонентов, контекст приложения также можно настроить с помощью инициализаторов контекста приложения.

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


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


Комментарии

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

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

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

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