ConnectionFactory异常Camel测试JMS

时间:2017-05-11 11:26:15

标签: junit jms

我正在使用Camel完成我的第一步,目前正致力于使用jms作为传输来编写简单的junit测试。

这是我写的代码:

public class FirstMockTest extends CamelTestSupport {

    @Override
    protected RoutesBuilder createRouteBuilder() throws Exception {
        return new RouteBuilder() {
            @Override
            public void configure() throws Exception {
                from("jms:topic:quote")
                        .to("mock:quote");
            }
        };
    }

    @Test
    public void testMessageCount() throws InterruptedException {
        MockEndpoint mockEndpoint = getMockEndpoint("mock:quote");
        mockEndpoint.setExpectedMessageCount(1);
        template.sendBody("jms:topic:quote", "Camel rocks");
        mockEndpoint.assertIsSatisfied();
    }
}

由于缺少connectionFactory,我得到以下异常:

org.apache.camel.FailedToCreateRouteException: Failed to create route route1: Route(route1)[[From[jms:topic:quote]] -> [To[mock:quote]]] because of connectionFactory must be specified

我可以修复它,在我的路线中添加以下行:

ConnectionFactory connectionFactory =
   new ActiveMQConnectionFactory("vm://localhost?roker.persistent=false");
context.addComponent("jms", JmsComponent.jmsComponent(connectionFactory));

但我不喜欢我在路线中添加一些组件到我的上下文。此外,如果我想要另一条路线,我将需要再做一次。 显然,应该有另一种方式来告诉我关于连接工厂的测试。

提前谢谢!

1 个答案:

答案 0 :(得分:0)

由于正在编写junit,因此如果对jms端点进行存根,则可以避免创建ConnectionFactory。您可以将端点命名为stub:jms:topic:quote。看一下链接https://github.com/camelinaction/camelinaction2/blob/master/chapter9/mock/src/test/java/camelinaction/FirstMockTest.java

的示例示例