Hi Karen

Yeah sure you are very welcome to fix the spring boot tests.

On Thu, Sep 9, 2021 at 5:12 PM Karen Lease <[email protected]> wrote:
>
> Hi Claus,
>
> I understand junit4 is deprecated but while I was looking at Evert-Jan's
> issue I found that some of the test classes in starter components in
> https://github.com/apache/camel-spring-boot are still set up as Junit4
> tests, for example the ones in camel-servlet-starter.
> Maven claims there are no tests at all in this module because the
> junit-vintage-engine dependency isn't present so the Junit4 tests are
> ignored.
> If I add this dependency then the tests are run but one of them fails
> due to the change in the property "camel.servlet.mapping.enabled."
>
> So shall I create a JIRA to update the camel-spring-boot tests to Junit5
> and fix  any that are broken?
>
> Karen
>
> On 09/09/2021 13:35, Claus Ibsen wrote:
> > Hi
> >
> > junit4 is deprecated and to be removed in a future Camel release.
> >
> > On Thu, Sep 9, 2021 at 1:03 PM Karen Lease <[email protected]> wrote:
> >>
> >> Hi Evert-Jan,
> >>
> >> I found a working Junit5 solution in current camel and addded a comment
> >> a working files to the JIRA issue. But so far I didn't figure out why it
> >> no longer works with Junit4.
> >>
> >> Regards,
> >> Karen Lease
> >>
> >> On 06/09/2021 11:22, Evert-Jan de Bruin wrote:
> >>> Hi Claus,
> >>>
> >>> I have created a JIRA issue with a sample testcase: 
> >>> https://issues.apache.org/jira/browse/CAMEL-16925
> >>>
> >>> Thank you!
> >>>
> >>> Evert-Jan de Bruin
> >>>
> >>> -----Oorspronkelijk bericht-----
> >>> Van: Claus Ibsen <[email protected]>
> >>> Verzonden: zaterdag 4 september 2021 22:50
> >>> Aan: [email protected]
> >>> Onderwerp: Re: CamelSpringBootRunner no longer working since 3.5.0?
> >>>
> >>> Hi
> >>>
> >>> Put together a small spring boot sample app that does this web app port 
> >>> number testing thingy, and add the Camel route.
> >>> Then put it on github somewhere or create a JIRA and attach a .zip file 
> >>> so others can take a look.
> >>>
> >>> On Sat, Sep 4, 2021 at 10:34 PM Evert-Jan de Bruin 
> >>> <[email protected]> wrote:
> >>>>
> >>>> Hi there,
> >>>>
> >>>> Thanks, but this is not what we are looking for nor how all our 
> >>>> integration tests are setup right now.
> >>>>
> >>>> I know Camel provides a myriad of ways to test your routes by changing 
> >>>> parts of the route as a mock. We also use that for unit-testing our 
> >>>> Processors. It is how I started out for integration tests as well, until 
> >>>> a colleague pointed out we should test the route *as is* and just mock 
> >>>> the REST call and other endpoints. From an integration point of view 
> >>>> (treating camel routes as a black box) this is a more 'pure' form of 
> >>>> testing. Also, it makes it easier to test certain how our route is 
> >>>> handling HTTP requests and responses, which are harder to mock with 
> >>>> direct: routes.
> >>>>
> >>>> So from a functional point of view: can we still do integration tests on 
> >>>> REST services in Camel, where the routes are not altered in any form and 
> >>>> an actual webserver boots and runs the route? Or has there been a 
> >>>> conscious choice to no longer support that scenario?
> >>>>
> >>>> Regards,
> >>>> Evert-Jan
> >>>>
> >>>>
> >>>> -----Oorspronkelijk bericht-----
> >>>> Van: [email protected] <[email protected]>
> >>>> Verzonden: vrijdag 3 september 2021 22:06
> >>>> Aan: Evert-Jan de Bruin <[email protected]>
> >>>> CC: [email protected]
> >>>> Onderwerp: Re: CamelSpringBootRunner no longer working since 3.5.0?
> >>>>
> >>>> Hi!
> >>>>
> >>>> I have walked your way recently.
> >>>>
> >>>> That is what I achieved.
> >>>>
> >>>> build.gradle:
> >>>> _____________
> >>>>       testImplementation 'org.springframework.boot:spring-boot-starter-
> >>>> test'
> >>>>       testImplementation 'org.apache.camel:camel-test-spring-
> >>>> junit5:3.11.0'
> >>>>
> >>>>
> >>>> test:
> >>>> _____
> >>>>
> >>>> @SpringBootTest(classes = MyApplication.class) // for run test
> >>>> @CamelSpringBootTest // for autowire and start Camel Context
> >>>> @UseAdviceWith // for modify routes to be able to test them
> >>>> @Transactional // for not to save into database public class MyTest {
> >>>>
> >>>>     @Autowired
> >>>>     CamelContext camelContext;
> >>>>
> >>>>     @Test
> >>>>     void anyTest {
> >>>>       // you must use advice before starting Camel context
> >>>>       doMockEndpoints();
> >>>>       // prepare your data
> >>>>
> >>>>       MockEndpoint resultEndpoint =
> >>>> camelContext.getEndpoint(MOKED_ENPOINT_URI, MockEndpoint.class);
> >>>>
> >>>>       // you must start the context manually
> >>>>       camelContext.start();
> >>>>
> >>>>       // set up of mock endpoint
> >>>>       resultEndpoint.expectedMessageCount(1);
> >>>>       resultEndpoint.expectedBodiesReceived(aRequest());
> >>>>
> >>>>       producerTemplate.sendBody(START_ENDPOINT_URI,
> >>>> objectMapper.writeValueAsString(anIssueCardRequest()));
> >>>>
> >>>>       // check if result was satisfied
> >>>>       resultEndpoint.assertIsSatisfied();
> >>>>       // and stop the context manually
> >>>>       camelContext.stop();
> >>>>
> >>>>     }
> >>>>
> >>>>     private void doMockEndpoints() throws Exception {
> >>>>       AdviceWith.adviceWith(camelContext, ROUTE_ID, in -> {
> >>>>               in.interceptSendToEndpoint(ENDPOINT_URI).setBody().body(ex
> >>>> -> marshal(aDto()));
> >>>>       });
> >>>>     }
> >>>> }
> >>>>
> >>>> _________
> >>>>
> >>>> All endpoints URIs must be changed from real connections to "direct".
> >>>> If you write second test (method) inside this class (if you have two and 
> >>>> more tests inside the Class Test) you should mark each test with 
> >>>> @DirtiesContext.
> >>>>
> >>>>
> >>>> On Fri, 2021-09-03 at 19:09 +0000, Evert-Jan de Bruin wrote:
> >>>>> Hi,
> >>>>>
> >>>>> I have tried the Junit5 / spring-boot example as well. Does not work
> >>>>> either, unfortunately.
> >>>>>
> >>>>> The difference with the sample in github is that I am trying to run
> >>>>> an actual webserver in my test listening on a certain port, the
> >>>>> example is only running a timer router.
> >>>>>
> >>>>> I have tried to modify the example to run as a webserver, but that
> >>>>> gives me problems as well.
> >>>>>
> >>>>> Regards
> >>>>> Evert-Jan
> >>>>>
> >>>>>
> >>>>> -----Oorspronkelijk bericht-----
> >>>>> Van: Claus Ibsen <[email protected]>
> >>>>> Verzonden: vrijdag 3 september 2021 17:09
> >>>>> Aan: [email protected]
> >>>>> Onderwerp: Re: CamelSpringBootRunner no longer working since 3.5.0?
> >>>>>
> >>>>> Hi
> >>>>>
> >>>>> Take a look at the camel-spring-boot example how its unit tested
> >>>>> https://github.com/apache/camel-spring-boot-examples/blob/main/sprin
> >>>>> g- boot/src/test/java/sample/camel/MyCamelApplicationJUnit5Test.java
> >>>>>
> >>>>> You should not use @RuntWith anymore
> >>>>>
> >>>>> On Fri, Sep 3, 2021 at 4:33 PM Evert-Jan de Bruin
> >>>>> <[email protected]> wrote:
> >>>>>>
> >>>>>> Hello,
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> We are currently (happily) using Camel 3.4.4.
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> When trying to upgrade to any version beyond 3.5.0 (also 3.11.1),
> >>>>>> our integration tests won’t run anymore. At first it complained
> >>>>>> about the @LocalServerPort annotation not working, but it turned
> >>>>>> out the spring boot (including the webserver) just wasn’t loading 
> >>>>>> properly.
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> I have reduced it to a very simple testcase:
> >>>>>>
> >>>>>> @SpringBootTest(classes = StudentMain.class, webEnvironment =
> >>>>>> SpringBootTest.WebEnvironment.DEFINED_PORT)
> >>>>>>
> >>>>>> @ActiveProfiles("integrationtest")
> >>>>>>
> >>>>>> @RunWith(CamelSpringBootRunner.class)
> >>>>>>
> >>>>>> public class ConfigsRouteBuilderTest  {
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>       private int port = 8080;
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>       @Test
> >>>>>>
> >>>>>>       public void testConfigsRoute() throws Exception {
> >>>>>>
> >>>>>>           HttpEntity<String> httpEntity = new HttpEntity<String>(new
> >>>>>> HttpHeaders());
> >>>>>>
> >>>>>>           String uri =
> >>>>>> String.format(http://localhost:%d/integrationtest/hello, port);
> >>>>>>
> >>>>>>           ResponseEntity<String> response = new
> >>>>>> RestTemplate().exchange(uri, HttpMethod.GET, httpEntity,
> >>>>>> String.class);
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>           assertEquals("<text>hello world!</text>",
> >>>>>> response.getBody());
> >>>>>>
> >>>>>>       }
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> }
> >>>>>>
> >>>>>>
> >>>>>> When I try to run this test with 3.4.4, it runs fine. When I try
> >>>>>> to run it with Apache camel 3.5.0 or 3.11.1, it is simply not
> >>>>>> starting right. The CampelSpringBootRunner does not seem to kick into 
> >>>>>> action.
> >>>>>> There is no spring boot logo, no tomcat starting and the test
> >>>>>> obviously fails with “I/O error on GET request for
> >>>>>> http://localhost:8080/integrationtest/hello: Connection refused”
> >>>>>>
> >>>>>> Does anyone know what I miss to get things going? Do I need to use
> >>>>>> different annotations since 3.5.0?
> >>>>>>
> >>>>>> I have also tested with jUnit5 instead of 4, this didn’t make a
> >>>>>> difference.
> >>>>>>
> >>>>>> I am new to this group and not sure if this group allows
> >>>>>> attachments, but I have added my pom.xml for reference and could
> >>>>>> provide a ZIP of the whole testcase as well.
> >>>>>>
> >>>>>> Regards,
> >>>>>> Evert-Jan
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> Evert-Jan de Bruin | Software Architect | CACI bv | De Ruijterkade
> >>>>>> 7,
> >>>>>> 1013 AA Amsterdam | +31 (088) 654 35 00 |
> >>>>>> [email protected]
> >>>>>> | www.caci.nl
> >>>>>>
> >>>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> --
> >>>>> Claus Ibsen
> >>>>> -----------------
> >>>>> http://davsclaus.com @davsclaus
> >>>>> Camel in Action 2: https://www.manning.com/ibsen2
> >>>>
> >>>> --
> >>>> _________________
> >>>> Vyacheslav Boyko,
> >>>> mailto:[email protected]
> >>>>
> >>>
> >>>
> >>> --
> >>> Claus Ibsen
> >>> -----------------
> >>> http://davsclaus.com @davsclaus
> >>> Camel in Action 2: https://www.manning.com/ibsen2
> >>>
> >
> >
> >



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Reply via email to