2016-09-29 5 views
1

Я хочу запустить JUnit-тест с использованием JMS. Можно ли использовать JUnit-тест для использования JMS вне сервера приложений, такого как JBoss или контейнер CDI?Есть ли способ использовать JMS в тесте JUnit?

+0

Почему голос? это разумный вопрос – chrisl08

+0

@ chrisl08 ответ хороший. В качестве альтернативы вы можете использовать ** встроенный брокер **, чтобы избежать насмешек. Таким образом, вы можете протестировать интеграцию между вашими компонентами/классами без каких-либо заглушек или макетов. Это ближе к реальной жизни. –

ответ

3

При условии, что отправка и потребление сообщения полностью отделена от JMS, вы можете издеваться над ним.

Например: у вас может быть класс, который реализует интерфейс типа «IMyClassSender». В реальном коде (non junit) все это класс представляет сообщение JMS. В junit внедрите IMyClassSender с классом, который берет ввод, и вместо этого, отправляя его в JMS, он передает его в ваш потребительский класс.

В качестве альтернативы, если вы используете активный мэк: http://activemq.apache.org/how-to-unit-test-jms-code.html

+0

Это похоже на возможное решение! Издевательская JMS! Вопрос об activemq, мне нужно будет включить библиотеку activemq в проект, чтобы использовать его в JUnit? – user840930

+0

Также с ActiveMQ, не нужен ли мне сервер ActiveMQ? – user840930

+0

Не совсем, потому что вы можете использовать 'EmbeddedActiveMQBroker' - см. Ссылку, указанную в ответе, для получения подробной информации. –

0

Вы также можете пересмотреть с использованием сервера приложений для этого - Arquillian (http://arquillian.org) позволяет для выполнения блока и тест интеграции в JavaEE среде по вашему выбору - и управляет жизненный цикл сервера приложений сам по себе.

+0

Да, ваш ответ ценен, но Аркильян имеет свои нюансы. Его настройка довольно сложная, ее природа сосредоточена на создании «микроразведений» для каждого теста, выполнение тестов довольно продолжительное и так далее ... –

+0

плюс, вопрос четко сформулировал «JUnit test use JMS вне сервера приложений», – chrisl08

+0

Существует также известная проблема с тем, что Arquillian не освобождает ресурсы после завершения теста. Эта проблема может быть showstopper, когда вы планируете запускать свои тесты в среде непрерывного развертывания, такой как Jenkins. – user840930

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