Интеграционное тестирование в Spring: аннотации Spring Testing
Spring Framework предоставляет набор специфичных для Spring аннотаций, которые вы можете использовать в своих модульных и интеграционных тестах вместе со структурой TestContext.
Аннотации тестирования Spring включают следующее:
- @BootstrapWith
- @ContextConfiguration
- @WebAppConfiguration
- @ContextHierarchy
- @ActiveProfiles
- @TestPropertySource
- @DynamicPropertySource
- @DirtiesContext
- @TestExecutionListeners
- @Commit
- @Rollback
- @BeforeTransaction
- @AfterTransaction
- @Sql
- @SqlConfig
- @SqlMergeMode
- @SqlGroup
@BootstrapWith
@BootstrapWith - это аннотация на уровне класса, которую вы можете использовать для настройки способа загрузки Spring TestContext Framework. В частности, вы можете использовать @BootstrapWith, чтобы указать собственный TestContextBootstrapper.
@ContextConfiguration
@ContextConfiguration определяет метаданные уровня класса, которые используются для определения того, как загружать и настраивать ApplicationContext для интеграционных тестов. В частности, @ContextConfiguration объявляет расположение ресурсов контекста приложения или классы компонентов, используемые для загрузки контекста.
Расположение ресурсов обычно представляет собой файлы конфигурации XML или сценарии Groovy, расположенные в пути к классам, тогда как классы компонентов обычно представляют собой классы @Configuration. Однако расположение ресурсов может также относиться к файлам и сценариям в файловой системе, а классы компонентов могут быть классами @Component, классами @Service и так далее.
В следующем примере показана аннотация @ContextConfiguration, которая ссылается на XML-файл:
@ContextConfiguration("/test-config.xml")
class XmlApplicationContextTests {
// тело класса...
}
В следующем примере показана аннотация @ContextConfiguration, которая ссылается на класс:
@ContextConfiguration(classes = TestConfig.class)
class ConfigClassApplicationContextTests {
// тело класса...
}
В качестве альтернативы или в дополнение к объявлению расположений ресурсов или классов компонентов вы можете использовать @ContextConfiguration для объявления классов ApplicationContextInitializer. В следующем примере показан такой случай:
@ContextConfiguration(initializers = CustomContextIntializer.class)
class ContextInitializerTests {
// тело класса...
}
При желании вы можете использовать @ContextConfiguration, чтобы объявить стратегию ContextLoader. Однако обратите внимание, что обычно вам не нужно явно настраивать загрузчик, поскольку загрузчик по умолчанию поддерживает инициализаторы и либо расположения ресурсов, либо классы компонентов.
В следующем примере используются как местоположение, так и загрузчик:
@ContextConfiguration(locations = "/test-context.xml", loader = CustomContextLoader.class)
class CustomLoaderXmlApplicationContextTests {
// тело класса...
}}
@ContextConfiguration обеспечивает поддержку для наследования расположений ресурсов или классов конфигурации, а также инициализаторов контекста, объявленных суперклассами.
Читайте также:
- Интеграционное тестирование в Spring
- Интеграционное тестирование в Spring: цели, вспомогательные классы
- Интеграционное тестирование в Spring: поддержка тестирования JDBC
Комментарии
Отправить комментарий