[ 
https://issues.apache.org/jira/browse/CAMEL-15401?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Bert Koorengevel updated CAMEL-15401:
-------------------------------------
    Description: 
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.

  was:
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.


> 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
>            Priority: Minor
>
> 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