Как настроить фиктивную очередь с помощью mockrunner для проверки фильтра xml?
Я использую пакет mockrunner из http://mockrunner.sourceforge.net/ чтобы настроить ложную очередь для тестирования JUnit XML-фильтра, который работает следующим образом:
- устанавливает распознанные свойства для ftp-сервера для размещения и получения входных данных xml и сервера очередей jms, который отслеживает задания. Удаленно ждет сервер, который фактически анализирует xml после получения сообщения очереди.
- создает удаленный каталог с помощью ftp и запускает соединение с очередью с помощью mqconnectionfactory по указанному адресу сервера очереди.
- как только новая запись очереди сделана в 2), фильтр ожидает появления нового сообщения очереди, означающего, что задание было завершено удаленным сервером. Затем фильтр получает измененный XML-файл с FTP-сервера и передает его следующему фильтру.
Тест JUnit, над которым я работаю, просто должен эмулировать эту среду, запустив локальный ftp и фиктивный сервер очередей для фильтра, к которому нужно подключиться, затем дождавшись, пока фильтр подключится к очереди, и поместит новый входной файл xml в локальный каталог. через локальный FTP-сервер дождитесь сообщения очереди, а затем слегка измените ввод XML, поместите измененный XML в новый каталог и отправьте в очередь еще одно сообщение, означающее, что задание выполнено.
Все учебники, которые я нашел в сети, использовали EJB и JNDI для поиска сервера очередей после его создания. Если возможно, я бы хотел обойти этот маршрут, просто создав ложную очередь на моем локальном компьютере и подключившись к ней самым простым способом, не используя EJB и JNDI.
Заранее спасибо!
2 ответа
Я использую MockEjb, и среди них есть несколько примеров, например, использование фиктивных очередей, поэтому взгляните на информацию и пример. Надеюсь, это поможет.
Я бы посоветовал взглянуть на использование Apache Camel для создания тестового примера. Тогда действительно легко переключить ваш тестовый пример с любого из доступных компонентов, и, что наиболее важно, Camel поставляется с несколькими очень удобными конечными точками Mock, которые упрощают тестирование сложной логики маршрутизации, особенно с асинхронными операциями.
Если вы также используете Spring, то, возможно, начните с тестирования этих модульных тестов Spring с фиктивными конечными точками в Camel, которые позволяют вам вводить фиктивные конечные точки для выполнения утверждений вместе с объектом ProducerTemplate, чтобы упростить запуск ваших сообщений для вашего тестового примера., например, посмотрите последний пример на этой странице.
Начните с использования простых конечных точек, таких как конечная точка SEDA, - затем, когда вы разберетесь с базовой структурой пружины / макета, попробуйте использовать конечную точку JMS или конечные точки FTP и т. Д.