Hi junit4 is deprecated and to be removed in a future Camel release.
On Thu, Sep 9, 2021 at 1:03 PM Karen Lease <karenlease...@gmail.com> 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 <claus.ib...@gmail.com> > > Verzonden: zaterdag 4 september 2021 22:50 > > Aan: users@camel.apache.org > > 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 > > <evert-jan.de.br...@caci.nl.invalid> 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: mail4...@gmail.com <mail4...@gmail.com> > >> Verzonden: vrijdag 3 september 2021 22:06 > >> Aan: Evert-Jan de Bruin <evert-jan.de.br...@caci.nl.INVALID> > >> CC: users@camel.apache.org > >> 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 <claus.ib...@gmail.com> > >>> Verzonden: vrijdag 3 september 2021 17:09 > >>> Aan: users@camel.apache.org > >>> 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 > >>> <evert-jan.de.br...@caci.nl.invalid> 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 | > >>>> evert-jan.de.br...@caci.nl > >>>> | www.caci.nl > >>>> > >>>> > >>> > >>> > >>> > >>> -- > >>> Claus Ibsen > >>> ----------------- > >>> http://davsclaus.com @davsclaus > >>> Camel in Action 2: https://www.manning.com/ibsen2 > >> > >> -- > >> _________________ > >> Vyacheslav Boyko, > >> mailto:mail4...@gmail.com > >> > > > > > > -- > > 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