我在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加载路由。
答案 0 :(得分:3)
Tom你已经在Camel邮件列表上发布了这个帖子。我建议您在此处发布Q时也写这个。
答案已在此处公布 http://camel.465427.n5.nabble.com/Problems-testing-Camel-with-Spring-config-tp4267754p4267754.html
答案 1 :(得分: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();
}
}
答案 2 :(得分:2)
感谢这个解决方案,@ Tom!
我也很难让Camel使用我的Spring驱动的JUnit测试,问题是建议的CamelSpringJUnit4ClassRunner现在从camel-spring.jar转移到一个单独的模块,camel-spring-test.jar,这是自2.9.2以来标准的驼峰分布中没有。
所以我不能使用@RunWith,但不得不诉诸解决方案中描述的手动方法......