запустить приложение весенней загрузки из теста - PullRequest
0 голосов
/ 16 мая 2018

У меня есть два приложения для весенней загрузки.Первый управляет данными в базе данных PostgreSQL.Другой выставляет эти данные поверх REST.

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

Как я могу использовать первое приложение с весенней загрузкой в ​​своем тесте для второго приложения с весенней загрузкой?

Или можно настроить, чтобы тест можно было запускать только в том случае, если тест выполняется из первого приложения для весенней загрузки?

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Существуют разные виды тестирования. Первый - это модульное тестирование - это подтверждает, что ваша бизнес-логика работает. Вторая форма - это интеграционное тестирование, которое снова разделено на две части: сначала вы тестируете компонент изолированно, чтобы убедиться, что он сообщает то, что вы ожидаете (иногда это называется тестированием компонента), а во-вторых, вы тестируете компонент против других, реальные, компоненты.

Вы можете легко выполнять юнит-тесты в maven / spring-boot, а также довольно легко выполнять тестирование компонентов. Однако интеграционное тестирование обычно намного сложнее и обычно требует использования механизма, выходящего за рамки простой системы сборки maven. Наиболее распространенным подходом к этому является использование инструмента CI / CD, такого как Jenkins или CircleCI.

Обычный шаблон - сначала запустить модульные тесты, потому что они самые быстрые, затем компонентные, а затем интеграционные. Последнее часто требует создания «среды», которая содержит все сотрудничающие компоненты, составляющие службу (два подпружиненных приложения в вашем случае).

При интеграционном тестировании мы часто обнаруживаем, что самой большой проблемой является «Управление конфигурацией», которое представляет собой описание того, какие версии каких компонентов работают вместе. Для решения вашей проблемы вам понадобятся база данных, данные и два приложения для начальной загрузки, а также их данные о конфигурации и среде.

0 голосов
/ 16 мая 2018

Прежде всего: вы не должны запускать ни первое, ни второе приложение в своих тестах.Это значительно замедлит ваше тестирование.Более того, вы будете зависеть от другого приложения, которое в действительности может быть разработано другой командой - плохая идея.

На самом деле, у вас есть что-то вроде 3 способов сделать это:

  1. Используйте Wiremock или другую фиктивную заглушку - этот подход подойдет вам, если вы готовы не вызывать «настоящее» приложение.Служба должна имитировать ваше приложение (должна отображать один и тот же интерфейс, т.е. URL, метод HTTP, тот же ответ)

  2. Используйте оба приложения в контейнерах Docker и запустите его с помощью Docker Compose - вы можетеиспользуйте здесь либо реальную базу данных, развернутую где-то, либо другой контейнер с предопределенными данными

  3. Разверните первый сервис где-нибудь вместе с базой данных и запустите интеграционные или системные или сквозные тесты

Надеюсь, это поможет!

ОБНОВЛЕНИЕ : я имел в виду, что вы не должны запускать приложения в тестах .Кроме того, на мой взгляд, достаточно очевидно, что мы говорим об интеграции тестирования, по крайней мере, поскольку парень упоминает о тестировании всего запроса, начиная с приложения REST.Может быть, это проясняет вещи для downvoters

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