3

我定义了一个路由CamelRoutes.xml,我想使用http://camel.apache.org/mock.html底部描述的包装技术来测试它们。

我的CamelRoutes.xml

 <route autoStartup="true"  xmlns="http://camel.apache.org/schema/spring">
        <from uri="direct:start"/>
        <to uri="direct:end"/>
    </route>

所以我创建了CamelRoutesTest.xml包含:

<import resource="CamelRoutes.xml"/>
<bean id="mockAllEndpoints" class="org.apache.camel.impl.InterceptSendToMockEndpointStrategy"/>

但我不确定如何创建一个既加载 spring xml 又提供对模拟端点的访问的测试。

如果我用..

@ContextConfiguration( locations=("/CamelRoutesTest"))
public class CamelTest extends AbstractJUnit38SpringContextTests

}

然后我不知道如何获取模拟端点

如果我用..

public class CamelTest extends CamelTestSupport

}

然后我不知道如何加载我的骆驼上下文..

我似乎无法在网站上找到使用CamelTestSupport并从 spring xml 加载路由的示例测试。

4

3 回答 3

3

汤姆,你已经在 Camel 邮件列表上发布了这个。我建议你在这里发布 Q 时也写下这个。

答案已经发布在这里 http://camel.465427.n5.nabble.com/Problems-testing-Camel-with-Spring-config-tp4267754p4267754.html

于 2011-03-28T18:06:54.803 回答
3

使用解决:

public class CamelTest extends CamelSpringTestSupport {  

    @Override
    protected AbstractXmlApplicationContext createApplicationContext() {
        return new ClassPathXmlApplicationContext("/CamelRoutesTest.xml");
    }

    @Test
    @DirtiesContext
    public void discover() throws Exception {

        getMockEndpoint("mock:my.route.out").expectedMessageCount(1);

        template.sendBody("direct:my.route.in", FileUtils.slurpClassPathFile("/samples/sample.data.xml"));

        assertMockEndpointsSatisfied();

    }


}
于 2011-07-05T15:43:34.760 回答
2

感谢这个解决方案,@Tom!

我也很难让 Camel 使用我的 Spring 驱动的 JUnit 测试,问题是建议的 CamelSpringJUnit4ClassRunner 现在已从 camel-spring.jar 移动到单独的模块 camel-spring-test.jar,该模块在从 2.9.2 开始的标准骆驼分布。

所以我不能使用@RunWith,但不得不求助于解决方案中描述的手动方法......

于 2012-05-25T13:02:56.570 回答