[
https://issues.apache.org/jira/browse/CAMEL-5494?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Willem Jiang reassigned CAMEL-5494:
-----------------------------------
Assignee: Willem Jiang
> Camel's JavaConfigContextLoader class lacks support for Camel's testing
> annotations
> -----------------------------------------------------------------------------------
>
> Key: CAMEL-5494
> URL: https://issues.apache.org/jira/browse/CAMEL-5494
> Project: Camel
> Issue Type: Improvement
> Components: camel-spring
> Affects Versions: 2.10.0
> Reporter: Joshua Ecklund
> Assignee: Willem Jiang
> Labels: annotations, javaconfig, mocks, spring, test
> Attachments: CamelSpringDelegatingTestContextLoader.java,
> TestCamelSpringDelegatingTestContextLoader.java
>
>
> 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
> {code:java}
> @ContextConfiguration(
> locations = {"blah.EsbConfig", ... },
> loader = JavaConfigContextLoader.class
> )
> {code}
> 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). See example below.
> {code:java}
> @RunWith(CamelSpringJUnit4ClassRunner.class)
> @ContextConfiguration(
> classes =
> {TestCamelSpringDelegatingTestContextLoader.TestConfig.class},
> loader = CamelSpringDelegatingTestContextLoader.class
> )
> @MockEndpoints
> public class TestSomethingWithCamel { ... }
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira