The spring-testing.html doesnt mention CamelSpringTestSupport. Im not sure
where to look in camel test suite.
I tried this..
public class SimpleRouteTest extends CamelSpringTestSupport {
@Override
protected AbstractXmlApplicationContext createApplicationContext() {
return new ClassPathXmlApplicationContext("/CamelRoutesSimple.xml");
}
public String isMockEndpoints() {
return "*";
}
@Test
public void testSendMessage() throws Exception {
getMockEndpoint("mock:direct:end").expectedMessageCount(1);
template.sendBody("mock:direct:start", "blah");
assertMockEndpointsSatisfied();
}
}
It doesnt work though...
>From the log it looks like my route is started but then a fresh camel
context without route is started for the tests.
2011-03-28 16:46:22,976 [main] INFO
org.apache.camel.spring.SpringCamelContext - Apache Camel 2.7.0
(CamelContext: camel-1) is starting
2011-03-28 16:46:22,976 [main] INFO
org.apache.camel.spring.SpringCamelContext - JMX enabled. Using
ManagedManagementStrategy.
2011-03-28 16:46:23,533 [main] INFO
org.apache.camel.spring.SpringCamelContext - Route: route1 started and
consuming from: Endpoint[direct://start]
2011-03-28 16:46:23,538 [main] INFO
org.apache.camel.spring.SpringCamelContext - Total 1 routes, of which 1 is
started.
2011-03-28 16:46:23,539 [main] INFO
org.apache.camel.spring.SpringCamelContext - Apache Camel 2.7.0
(CamelContext: camel-1) started in 0.562 seconds
2011-03-28 16:46:23,542 [main] INFO agentsmith.routes.SimpleRouteTest -
********************************************************************************
2011-03-28 16:46:23,543 [main] INFO agentsmith.routes.SimpleRouteTest -
Testing: testSendMessage(agentsmith.routes.SimpleRouteTest)
2011-03-28 16:46:23,543 [main] INFO agentsmith.routes.SimpleRouteTest -
********************************************************************************
2011-03-28 16:46:23,547 [main] INFO
org.apache.camel.impl.InterceptSendToMockEndpointStrategy - Adviced
endpoint [direct://start] with mock endpoint [mock:direct:start]
2011-03-28 16:46:23,557 [main] INFO
org.apache.camel.impl.InterceptSendToMockEndpointStrategy - Adviced
endpoint [direct://end] with mock endpoint [mock:direct:end]
2011-03-28 16:46:23,558 [main] INFO
org.apache.camel.impl.InterceptSendToMockEndpointStrategy - Adviced
endpoint [spring-event://default] with mock endpoint
[mock:spring-event:default]
2011-03-28 16:46:23,577 [main] INFO
org.apache.camel.component.mock.MockEndpoint - Asserting:
Endpoint[mock://spring-event:default] is satisfied
2011-03-28 16:46:23,577 [main] INFO
org.apache.camel.component.mock.MockEndpoint - Asserting:
Endpoint[mock://direct:end] is satisfied
java.lang.AssertionError: mock://direct:end Received message count.
Expected: <1> but was: <0>
at
org.apache.camel.component.mock.MockEndpoint.fail(MockEndpoint.java:1086)
....
On Mon, Mar 28, 2011 at 4:37 PM, Claus Ibsen <[email protected]> wrote:
> On Mon, Mar 28, 2011 at 5:34 PM, Tom Howe <[email protected]> wrote:
> > I've read the testing page but it doesnt give any good eaxmple of using
> > spring xml routes
> >
>
> There is more here
> http://camel.apache.org/spring-testing.html
>
>
> > Can you point me to an example of CamelSpringTestSupport ? I cant see any
> > docs on it's usage?
> >
>
> Just try to extend this class and it forces you to implement a method
> where you load the Spring XML file.
> There are many examples in the source code, eg in camel-spring module.
> https://svn.apache.org/repos/asf/camel/trunk/components/camel-spring/
>
>
> Btw the Camel in Action book chapter 6 covers all about testing.
>
>
>
>
> > Thanks, Tom
> >
> > On Mon, Mar 28, 2011 at 4:27 PM, Claus Ibsen <[email protected]>
> wrote:
> >
> >> Hi
> >>
> >> Check out this page
> >> http://camel.apache.org/testing
> >>
> >> You can then use any IoC means to inject the mocks, such as
> >> @EndpointInjected or any of the Spring or the new @Resource from JDK6
> >> etc.
> >>
> >> Also you can extend CamelSpringTestSupport which allows you to load a
> >> Spring XML file.
> >> Thats often what we do to test Camel as CamelXXTestSupport is easy to
> >> get mocks, producer template and whatnot without having to IoC them.
> >>
> >>
> >> On Mon, Mar 28, 2011 at 5:11 PM, Tom Howe <[email protected]> wrote:
> >> > I have a routes defined in CamelRoutes.xml and I would like to test
> them
> >> by
> >> > using the wrapping technique described at the bottom of
> >> > http://camel.apache.org/mock.html.
> >> >
> >> > My CamelRoutes.xml
> >> > <route autoStartup="true" xmlns="
> >> http://camel.apache.org/schema/spring
> >> > ">
> >> > <from uri="direct:start"/>
> >> > <to uri="direct:end"/>
> >> > </route>
> >> >
> >> > So I created CamelRoutesTest.xml containing:
> >> >
> >> > <import resource="CamelRoutes.xml"/>
> >> > <bean id="mockAllEndpoints"
> >> > class="org.apache.camel.impl.InterceptSendToMockEndpointStrategy"/>
> >> >
> >> > but I am not sure how to create a test that both loads the spring xml
> AND
> >> > provides access to the mock endpoints.
> >> >
> >> > If I use..
> >> >
> >> > @ContextConfiguration( locations=("/CamelRoutesTest"))
> >> > public class CamelTest extends AbstractJUnit38SpringContextTests
> >> >
> >> > }
> >> >
> >> > then I have no idea how to *get* the mock endpoints
> >> >
> >> > If I use..
> >> >
> >> > public class CamelTest extends CamelTestSupport
> >> >
> >> > }
> >> >
> >> > then I dont know how to load my camel context..
> >> >
> >> >
> >> > I can't seem to find an example test on the website that uses
> >> > CamelTestSupport AND loads routes from spring xml.
> >> >
> >> > thanks, Tom
> >> >
> >>
> >>
> >>
> >> --
> >> Claus Ibsen
> >> -----------------
> >> FuseSource
> >> Email: [email protected]
> >> Web: http://fusesource.com
> >> Twitter: davsclaus
> >> Blog: http://davsclaus.blogspot.com/
> >> Author of Camel in Action: http://www.manning.com/ibsen/
> >>
> >
>
>
>
> --
> Claus Ibsen
> -----------------
> FuseSource
> Email: [email protected]
> Web: http://fusesource.com
> Twitter: davsclaus
> Blog: http://davsclaus.blogspot.com/
> Author of Camel in Action: http://www.manning.com/ibsen/
>