Hello,

While implementing a Camel route in a new project which uses Spring's
JavaConfig I ran into some issues with tests I had written.

Originally I implemented the tests using the old XML-based appContext, then
once I had everything working I started converting it all to JavaConfig.
 After some research, I found that to do this I had to use

@ContextConfiguration(
        locations = {"blah.EsbConfig", ... },
        loader = JavaConfigContextLoader.class
)

Which was fine, except it completely broke the functionality of the
@MockEndpoints annotation on my tests.  I tried adding
a org.apache.camel.impl.InterceptSendToMockEndpointStrategy bean to my
JavaConfig context, but that didn't change anything.  To fix it I ended up
making a new (Smart)ContextLoader called
CamelSpringDelegatingTestContextLoader, which extends Spring's
DelegatingSmartContextLoader and is based on CamelSpringTestContextLoader.
 It handles both XML and JavaConfig style Spring configuration, and so far
seems to have fixed everything.  You must use CamelSpringJUnit4ClassRunner
for this to work, and change @ContextConfiguration's "locations" to
"classes" (and specify them as Class instances).

In case it helps anyone in this situation, I am attaching the source.

Regards,

-Joshua

Reply via email to