Я бы сказал, что вполне законно писать интеграционные тесты / сквозные тесты / автоматизированные приемочные тесты, которые тестируют все приложение, включая все, что делается в MQ. Вы должны выбрать тестовые наборы, которые запускают что-то вроде этого, так как это резко замедляет цикл обратной связи ваших тестов.
Существует org.apache.qpid , который вы можете просто включить в свое приложение как mvn / 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. </em>