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
