Как игнорировать ContextRefreshedEvent при SpringBootTest? - PullRequest
1 голос
/ 27 февраля 2020

Я изо всех сил пытаюсь выяснить, как игнорировать метод класса, который должен запускать поток, когда SpringBootApplication готов, во время нормальной работы:

@EventListener
public void onApplicationEvent(ContextRefreshedEvent event) {

    this.start();
}

в случае тестирования я не хочу такого поведения хочу начать с тестового метода. Насколько я понимаю, ContextRefreshedEvent вызывается аннотацией @SpringBootTest на тестовом классе.

1 Ответ

1 голос
/ 29 февраля 2020

Для тестирования самого слушателя:

Вам не нужно @SpringBootTest для каждого теста приложения Spring Boot (я бы сказал, что вам нужно минимум таких тестов, поскольку они загружают все).

Существуют и другие варианты:

  • Если вам не нужно ничего из Spring: модульное тестирование сервиса с помощью Mockito (если у него есть зависимости, которые вы хотите удалить).
  • В противном случае: используйте слайсы - например, @JsonTest автоматически настроит ObjectMapper и другие компоненты для работы с JSON. Их довольно много, поэтому проверьте документацию, если есть какая-либо часть приложения, которую вы хотели бы автоматически настроить для своего теста.

Для исключения слушателя из других @SpringBootTest тестов:

Я вижу два варианта:

  • Перебрасывание компонента слушателя с помощью @MockBeans.
@SpringBootTest
@MockBeans(@MockBean(Listener.class))
public class SomeTest {
  // ...
}
  • Выполнение тестов внутри определенного c профиля и пометьте компонент-слушатель, который будет включен только в профиль по умолчанию. (Или не в профиле «test».)
@Component
@Profile("default") // OR: @Profile("!test")
public class Listener {
  // ...
}

@SpringBootTest
@ActiveProfiles("test")
public class SomeTest {
  // ...
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...