2012-04-10 2 views
3

Я разрабатываю приложение с интеграцией Spring и RabbitMq, и мне интересно, как его протестировать (интеграционные тесты).Тестирование интеграции RabbitMQ и Spring

Я думаю, что SoapUI может быть отличным решением, но он не поддерживает RAbbitMq, у hermesjms.com есть поддержка Qpid, поэтому я подумал, что может быть легко сделать новый плагин для поддержки Rabbitmq, но это сложнее, чем я думал из-за проекта является немного старым и имеет множество зависимостей. Итак, я начинаю думать, что делать что-то сам, как DSL в Python, что-то вроде этого:

tests = [{ 'name': 'start', 
    'routing_key': 'returned', 
    'payload' : "xxxxx", 
    'timeOut' : '10000', 
    'expected': '', 
    'threads': '1' 
}, 
{ 'name': 'second',..... 
] 

А потом с Пика выполнить действия и проверить результаты.

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

Что вы посоветуете?

ответ

1

RabbitMQ предоставляет вам веб-сайт (так называемый вид управления 1).

Итак: Что именно вы хотите проверить? Допустим, вы хотите, чтобы убедиться, что входящее сообщение на requestChannel вниз на службу и обратно, вы можете просто autowire канал непосредственно (т.е. @Autowired частный канал requestChannel;) и поместить сообщение в него.

Однако, только если вы правильно настроите свою архитектуру: каждый шаг вашего процесса можно протестировать с помощью макетов или специальных модифицированных вложенных зависимостей.

В дополнение к вашим собственным компонентам эта проверка применима к пружинным компонентам (интерфейсам). Предположим, вы реализовали собственный маршрутизатор: проверьте и подтвердите ввод и вывод. То же самое для трансформатора.

Если вы попытаетесь проверить «би-картинку», вам придется перестроить полный сценарий. Но это не должно быть настолько сложным с непостоянными и не долговечными очередями и сообщениями.

Есть ли что-то еще, что вы хотите проверить?

+0

Привет, спасибо за ответ. Я хотел, чтобы это было, чтобы автоматически проверять, было ли сообщение в очереди и содержание там, я не хотел тестировать rabbimtq. Я знаю веб-плагин, но я хотел протестировать автоматически. Например, вы отправляете сообщение в очередь A и ожидаете сообщение в B, и вы можете не только проверить это сообщение, но и заголовки и полезную нагрузку. И еще что-то вроде отправки сообщения какой-то скорости, и т. Д. Я, наконец, сделал мини-диаграмму в python, которая делает все, что нам нужно, я хотел бы однажды ее выпустить в github –

+0

Хотите ли вы «контролировать» своего брокера сообщений? обработки? Какие сообщения находятся в очереди и должны ждать? – knalli

0

Для rabbitMq, мой совет - использовать настоящий RabbiMQ: это можно сделать, используя Vagrant с шеф-поваром для предоставления RabbitMq и плагина Vagrant maven для запуска Box перед тестированием интеграции и остановки его в после фазы интеграции Тесты:

бродяга Maven плагин: http://nicoulaj.github.io/vagrant-maven-plugin/

Vagrant WebSite: http://www.vagrantup.com/

Cookbook Chef для RabbitMQ: https://github.com/opscode-cookbooks/rabbitmq

Чтобы подвести итог, необходимо:

  1. Установите бродягу и создайте пустую коробку (Centos или Ubunutu).
  2. Обеспечение виртуальной машины кулинарной книжкой rabbitMQ.
  3. место .box в вашу домашнюю папку (rabbitMQ.box).
  4. Настройте проект maven для запуска виртуальной машины с бродячим вверх (~/rabbitMQ.) в предварительной фазе интеграционных тестов.
  5. Конфигурируйте проект maven, чтобы остановить виртуальную машину с бродячей остановкой (~/rabbitMQ.box) в предварительной фазе интеграционных тестов.

Надеется, что этот помощь

Смежные вопросы