Unit testing Camel Blueprint routes
Last week, while in Vegas, I discussed with my colleague Scott Cranton and he told me that something that was really making our users tend to stick with Spring-DM when using Camel Blueprint routes was that unit testing those routes was not possible.
So I hacked a small support library for Camel, leveraging PojoSR which provides a service registry without using a fully compliant OSGi container. This allows defining real unit tests (as opposed to integration tests using Pax Exam.
See the below example.
So I hacked a small support library for Camel, leveraging PojoSR which provides a service registry without using a fully compliant OSGi container. This allows defining real unit tests (as opposed to integration tests using Pax Exam.
See the below example.
public class DebugBlueprintTest extends CamelBlueprintTestSupport { @Override protected Collection<URL> getBlueprintDescriptors() { return Collections.singleton(getClass().getResource("camelContext.xml")); } @Test public void testRoute() throws Exception { // set mock expectations getMockEndpoint("mock:a").expectedMessageCount(1); // send a message template.sendBody("direct:start", "World"); // assert mocks assertMockEndpointsSatisfied(); } }
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"> <camelcontext autostartup="true" id="camelContext" trace="true" xmlns="http://camel.apache.org/schema/blueprint"> <route> <from uri="direct:start"/> <transform> <simple>Hello ${body}</simple> </transform> <to uri="mock:a"/> </route> </camelcontext> </blueprint>
Comments
I've also improved the camel blueprint archetype to generate a similar small test.
Where is the camel-test-blueprint jar? I can only find a 2.1.0-SNAPSHOT version in camel's snapshots maven repo.
The dependency is documented on the Camel site under http://camel.apache.org/blueprint-testing.html - however only camel-testing seems to be available when you look in the release repo's.
I am trying to use the snapshot version but am getting a NoSuchMethodException on IOHelper.close(...) method which i suspect is because i've got camel-... 2.9.1 in my path instead of 2.1.0.
Is there a version compatible with 2.9.1? Is there a release version somewhere?
Regards,
Jon
https://repository.apache.org/content/groups/snapshots/org/apache/camel/camel-test-blueprint/2.10-SNAPSHOT/