Интеграционное тестирование в Spring: TestContext Framework, события выполнения теста

EventPublishingTestExecutionListener, представленный в Spring Framework 5.2, предлагает альтернативный подход к реализации настраиваемого TestExecutionListener. Компоненты в ApplicationContext теста могут прослушивать следующие события, опубликованные EventPublishingTestExecutionListener, каждое из которых соответствует методу в TestExecutionListener API.

  • BeforeTestClassEvent
  • PrepareTestInstanceEvent
  • BeforeTestMethodEvent
  • BeforeTestExecutionEvent
  • AfterTestExecutionEvent
  • AfterTestMethodEvent
  • AfterTestClassEvent

Эти события публикуются, только если ApplicationContext уже загружен.

Эти события могут использоваться по разным причинам, например, для сброса фиктивных компонентов или для отслеживания выполнения теста. Одним из преимуществ использования событий выполнения теста вместо реализации настраиваемого TestExecutionListener является то, что события выполнения теста могут потребляться любым компонентом Spring, зарегистрированным в тестовом ApplicationContext, и такие компоненты могут напрямую получать выгоду от внедрения зависимостей и других функций ApplicationContext. Напротив, TestExecutionListener не является bean-компонентом в ApplicationContext.

Чтобы прослушивать события выполнения теста, компонент Spring может выбрать реализацию интерфейса org.springframework.context.ApplicationListener. В качестве альтернативы методы прослушивателя могут быть аннотированы с помощью @EventListener и настроены для прослушивания одного из конкретных типов событий, перечисленных выше. Из-за популярности этого подхода Spring предоставляет следующие специальные аннотации @EventListener для упрощения регистрации слушателей событий выполнения теста. Эти аннотации находятся в пакете org.springframework.test.context.event.annotation.

  • @BeforeTestClass
  • @PrepareTestInstance
  • @BeforeTestMethod
  • @BeforeTestExecution
  • @AfterTestExecution
  • @AfterTestMethod
  • @AfterTestClass

Обработка исключений

По умолчанию, если прослушиватель событий выполнения теста выдает исключение во время использования события, это исключение распространяется на используемую базовую структуру тестирования (например, JUnit или TestNG). Например, если использование BeforeTestMethodEvent приводит к исключению, соответствующий метод тестирования завершится ошибкой в результате исключения. Напротив, если прослушиватель событий выполнения асинхронного теста выдает исключение, исключение не будет распространяться на базовую структуру тестирования.

Асинхронные слушатели

Если вы хотите, чтобы конкретный прослушиватель событий выполнения теста обрабатывал события асинхронно, вы можете использовать обычную поддержку Spring @Async.


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


Комментарии

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

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

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

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