Bert Koorengevel created CAMEL-15401:
----------------------------------------

             Summary: Improve website documentation on testing with SpringBoot 
& JUnit5
                 Key: CAMEL-15401
                 URL: https://issues.apache.org/jira/browse/CAMEL-15401
             Project: Camel
          Issue Type: Task
          Components: camel-spring-boot, camel-test
    Affects Versions: 3.4.2
         Environment: Spring Boot 2.3.2, JUnit5 that comes with the former, 
Java 11, Maven 3.6

 
            Reporter: Bert Koorengevel


When searching online for strategies to test a fragment of a Camel route with 
JUnit5 in the context of a Spring Boot application, the returned documentation 
seems somewhat outdated (favouring xml instead of java config for both Spring 
and Camel related aspects) and missing a major point.

Some top google hits for "apache camel test spring boot" are:
 * [https://camel.apache.org/manual/latest/testing.html] 
One (at least me) gets drawn to the "Spring Test With Java Config" example. 
When rebuilding from that example in a SpringBoot app, it won't ever work 
because the {{ProducerTemplate}} and {{MockEndpoint}} instances remain 
{{null}}. 
I happened to have an old working example of a project built with Camel v2.20 
which had the annotation {{@ContextConfiguration(loader = 
CamelSpringDelegatingTestContextLoader.class). }}Adding that (and a dependency 
on {{camel-test-spring}} on top of {{camel-test-spring-junit5}}) made the 
injections work but caused an NPE at 
{{org.apache.camel.test.spring.CamelAnnotationsHandler.handleDisableJmx(CamelAnnotationsHandler.java:90)}}
 which gets fixed by adding a static method that sets a dummy test class in 
{{CamelSpringTestHelper}}.
After asking for assistance on gitter it was suggested to try to annotate the 
test class with {{@CamelSpring*Boot*Test}} instead of {{@CamelSpringTest}} as 
the example showed. As always with annotations: that "_magically_" solved all 
issues. There was no way I could have known it existed.
 * [https://camel.apache.org/manual/latest/spring-testing.html]
Using CamelSpringTestSupport and rolling your own implementation of an 
AbstractApplicationContext does not sound very attractive.
The list of examples goes further with "Plain Spring tests" but only supported 
by JUnit4. It is uncertain whether this has any chance to work with JUnit5.
 * [https://camel.apache.org/components/latest/others/test-spring.html] 
As already stated on the page: old and needs updating. Won't comment further. 
This looks like the original example I built my Camel v2.20 project with, using 
the  {{CamelSpringDelegatingTestContextLoader}}
 * [https://camel.apache.org/components/latest/others/test-spring-junit5.html] 
It first suggests to extend CamelSpringTestSupport, but writing only my test 
config in xml does not sound appealing.
Next comes an example again using {{@CamelSpringTest}} which has identical 
issues as brought up in my first bullet.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to