Java тестовый проект для интеграционных тестов - PullRequest
0 голосов
/ 30 января 2020

Мне нужно работать со старым java приложением. Всего существует 6 проектов, которые:

  • общаются с использованием rest и mq, а у
  • уже есть несколько интеграционных тестов.

В рамках этого:

  1. movmock mocks используются для начальных запросов из теста
  2. дополнительные запросы http выполняются сервисами и
  3. они go против сервера dev вместо вызова кода из текущей сборки;
  4. произойдет сбой, если мой тестовый код использования, который связывается с другим проектом с помощью новой конечной точки, которой у dev пока нет.

Как я думал тестирование этого

Моя идея состояла в том, чтобы использовать один тестовый проект, который будет запускать все необходимые проекты, используя @SpringBootTest и mock mvc, чтобы имитировать реальные вызовы и передавать их внутри теста вместо использования реальных конечных точек.

Аск

  1. Я не понимаю, как заставить Spring работать с @Autowired и запускать 6 различных WebApplicationContext.
  2. Или, может быть, я должен забыть мой план и нас что-то другое.

1 Ответ

1 голос
/ 30 января 2020

Когда дело доходит до @SpringBootTest, предполагается, что он загружает все, что требуется для загрузки одного приложения с пружинной загрузкой.

Таким образом, "интеграционное тестирование", упомянутое в документации по тестированию Spring Boot, предназначено для одной конкретной c приложение.

Теперь вы говорите о 6 уже существующих приложениях. Если все эти приложения работают с пружинной загрузкой, вы можете запустить @SpringBootTest для каждого из них и смоделировать все, что вам не нужно. MockMvc что вы упомянули, кстати, не запускает целое приложение, а скорее запускает «часть» приложения, относящуюся к обработке веб-запросов (например, он не загружает ваш слой DAO), так что это совсем другое Но не путайте между ними быть выполненным на удаленной JVM. В этом случае вы можете контейнировать приложения и запускать их в тестовом режиме с помощью TestContainers .

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

В целом, я чувствую, что вопрос довольно расплывчатый и не содержит конкретных деталей.

...