Развертывание микросервиса для тестирования в рамках теста

Возможно, это невозможно сделать в целом в тестовой среде, но

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


person Brian Reinhold    schedule 30.08.2017    source источник


Ответы (3)


Честно говоря, это зависит от того, как развернут ваш микросервис и на какую инфраструктуру вы нацеливаетесь. Я предпочитаю интегрировать развертывание в сборку Maven, поскольку Maven обеспечивает этапы тестирования до и после интеграции.

Если вы можете использовать Kubernetes или Docker, я бы порекомендовал интегрировать развертывание с плагинами maven fabric8 (fabric8-maven -plugin, docker-maven-plugin). Это автоматически создаст / запустит / остановит развертывание контейнера Docker в сборке Maven.

Если вы можете использовать загрузку Spring, официальный плагин maven может сделать это таким же образом.

Другой вариант - использовать конвейеры сборки. Если непрерывная сборка с Jenkins, например, сначала развернет тестируемую систему, а затем выполнит тесты в конвейере.

Лично я предпочитаю всегда разделять задачи развертывания и тестирования. Если вы действительно хотите выполнить развертывание в рамках своего теста, Citrus в качестве фреймворка может запускать / останавливать контейнеры Docker и / или модули Kubernetes в рамках теста. Citrus также может интегрироваться с этапами набора тестов до и после выполнения этих задач развертывания.

person Christoph Deppisch    schedule 30.08.2017
comment
Спасибо, Кристоф. Я изучил варианты конвейера Jenkins, и я надеюсь, что это упростит разработку тестов. Для тестирования необходимо запустить службу! Обратной стороной сейчас является мое неуверенное понимание использования Docker и Kubernetes в системе Windows. - person Brian Reinhold; 31.08.2017

Я нашел способ сделать это с помощью docker-compose.

https://github.com/djangofan/karate-test-prime-example

По сути, создайте docker-compose.yml, который запускает ваш сервисный контейнер, а затем также запускает тесты e2e после вызова wait-for-it.sh.

person djangofan    schedule 05.01.2020

2 балла:

karate-demo - это пример Spring Boot, который развертывается Средство выполнения тестов JUnit. Вот код который запускает сервер.

karate-mock-servlet делает еще один шаг вперед, когда вы можете запускать тесты интеграции HTTP в своем проекте, не загружая сервер приложений. Экономьте время, и отчеты о покрытии кода становятся проще.

Если у вас есть какие-либо дополнительные требования, я буду рад их выслушать. Одна из вещей, которые мы хотели бы реализовать, - это встроенный фреймворк на стороне сервера - подумайте о встроенном макете: но с легкостью DSL Каратэ. Но конкретных сроков пока нет.

РЕДАКТИРОВАТЬ: теперь в карате есть издевательство: https://github.com/intuit/karate/tree/master/karate-netty

person Peter Thomas    schedule 30.08.2017
comment
Питер, спасибо за быстрый ответ. На прошлой неделе я довольно много посмотрел на Karate, Citrus и RestAssured (все подобные тесты для меня в новинку). Могу ли я использовать фреймворк Karate для развертывания микросервиса, написанного не на Java? Я не являюсь разработчиком микросервисов, но сейчас я знаю, что это Java и Spring с Spring Boot. Что касается создания макетов сервисов, Hoverfly должен работать нормально. Насколько я понимаю, Karate также работает с Jenkins и Zappy (чтобы сообщать результаты в JIRA). - person Brian Reinhold; 30.08.2017
comment
@BrianReinhold - теоретически вы можете использовать Java для вызова даже нативного кода - так что это зависит от того, насколько вы готовы подтолкнуть конверт автоматизации :) как и в другом ответе, Docker - это популярный способ поднять службы + зависимости как часть тестовой начальной загрузки. Вам понравятся отчеты Каратэ: twitter.com/KarateDSL/status/899671441221623809 - person Peter Thomas; 30.08.2017
comment
Питер. Я очень часто вижу Docker, что очень неприятно для Windows, так как здесь задействованы виртуальные машины. Моя главная забота - это также разработка тестов; то, чего я хочу избежать, это время для развертывания микросервиса, у которого есть собственный встроенный сервер в виртуальной машине, только для разработки теста. Почему-то я не понимаю, как можно избежать знания языка, на котором написан микросервис, если нужно создавать, локально запускать и разрабатывать тесты для этого микросервиса изолированно (со всеми его макетами) и не занимать весь день. Кстати; У меня нет другого выбора, кроме как поместить результаты теста в JIRA. Это не мое решение! - person Brian Reinhold; 31.08.2017