Интеграционное тестирование в 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 обеспечивает поддержку для наследования расположений ресурсов или классов конфигурации, а также инициализаторов контекста, объявленных суперклассами.


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


Комментарии

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

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

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

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