Тестирование с приложением заглушки / заглушки Embedded в SpringBoot - PullRequest
0 голосов
/ 02 октября 2019

Я пытаюсь написать интеграционный тест для моего микросервиса SpringBoot, который взаимодействует с другим сервисом в экосистеме продукта. Поскольку этот вид тестирования рассматривается как функциональное / интеграционное тестирование (в зависимости от используемой номенклатуры), оно обычно проводится в какой-либо среде разработки. Однако я хотел протестировать базовое взаимодействие между моей службой и приложением STUB / dummy, которые связаны с RPC (поэтому это не совсем типичный тест TestRestTemplate). Я знаю, что есть способ встроить сервис при загрузке Spring Context, но никогда не делал это сам. Кто-нибудь имеет опыт работы с верхними или, может быть, несколько полезных ссылок, где я могу исследовать.

1 Ответ

1 голос
/ 02 октября 2019

Я использовал WireMock в тестах, чтобы смоделировать сервисы, внешние по отношению к тому, что я хочу протестировать, которые общаются по HTTP. Мой тестовый класс, аннотированный @SpringBootTest, также аннотирован @ContextConfiguration. В атрибуте classes @ContextConfiguration я явно указываю классы конфигурации, необходимые для настройки контекста Spring для рассматриваемого теста. Здесь я также могу включить дополнительные классы конфигурации, в которых я создаю bean-компоненты, используемые только в тесте. В тестовых конфигурационных классах я также могу переопределять bean-компоненты для целей теста, создания фиктивных bean-компонентов и т. Д. Обратите внимание, что Spring Boot 2.1 и более поздние версии по умолчанию отключают переопределение bean-компонентов. Его можно включить, установив для следующего свойства значение true:spring.main.allow-боб-определение-переопределение = истинаЧтобы установить свойство для одного теста, используйте аннотацию @TestPropertySource, например:

@TestPropertySource(properties = {
    "spring.main.allow-bean-definition-overriding=true"
})
...