JMS-зависимости в модульных тестах - PullRequest
2 голосов
/ 05 февраля 2011

У меня есть заданный тест, который я хочу запустить в JUnit.Он зависит от сложной службы, которую код вызывает с помощью JMS, поэтому при выполнении теста JUnit у него не будет доступа к нему.Итак, учитывая тот факт, что мне нужно вызывать эту службу, каков наилучший способ оцепить эту службу, чтобы она просто возвращала жестко закодированный ответ при вызове во время выполнения теста JUnit?

Прямо сейчасон использует JNDI для поиска в очереди, и теперь он отлично работает, используя easymock, так что spring инициализируется без проблем.Но он также должен получить ответ на очередь ответов от службы-заглушки (очень важно).

Ответы [ 2 ]

1 голос
/ 05 февраля 2011

Как ответ должен передаваться в очередь ответов? Я предполагаю, что это происходит, вызывая определенный метод обратного вызова где-нибудь. У кого есть доступ к этому методу?

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

Capture<Queue> replyQueueCapture = new Capture<Queue>();
...
MessageService stubService = createMock(MessageService.class);
stubService.sendMessage(capture(replyQueueCapture));
...
// run the test which indirectly invokes the stub service
...
Queue replyQueue = replyQueueCapture.getValue();
replyQueue.offer(replyMessage);
1 голос
/ 05 февраля 2011

Рассматривали ли вы использование встроенного ActiveMQ в своих модульных тестах?

http://activemq.apache.org/how-to-unit-test-jms-code.html

...