Я бы сказал, что вполне законно писать интеграционные тесты/сквозные тесты/автоматизированные пользовательские приемочные тесты, которые проверяют все приложение, включая все, что делается в MQ. Вы должны выбрать тестовые примеры, которые запускают что-то вроде этого wiesely, так как это резко замедляет цикл обратной связи ваших тестов.
Существует org.apache.qpid, которые вы можете просто включить в приложение в виде МВН/Gradle (mvn central) зависимости (Gradle пример):
testCompile 'org.apache.qpid:qpid-broker:6.0.1'
, а затем добавить Rule
содержащий ExternalResource
, который стреляет вверх брокера, прежде чем ваши тесты , несколько похожи на эту довольно простую установку:
@Rule
private static final ExternalResource embeddedAMQPBroker = new ExternalResource() {
Broker broker;
@Override
protected void before() throws Throwable {
BrokerOptions brokerOptions = new BrokerOptions();
brokerOptions.setConfigProperty("qpid.amqp_port", "55672");
broker = new Broker();
broker.startup(brokerOptions);
}
@Override
protected void after() {
broker.shutdown();
}
};
непроверенного, так как для меня это не сработал, потому что все мои приложения содержат Jetty 9 и QPID (все еще) требует Jetty < 9.
, наконец, через 6 лет с моего вопроса есть ampq-брокер, который можно запустить из кода :) –
Мне пришлось объявить ExternalResource публичным и аннотировать его с помощью @ClassRule, чтобы он работал с JUnit4.12. – danidemi