This is an automated email from the ASF dual-hosted git repository. jamesnetherton pushed a commit to branch 2.13.x in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit 7e5fc808cdce183bdca1cf0965d951bf577a6202 Author: JiriOndrusek <ondrusek.j...@gmail.com> AuthorDate: Thu Jan 5 16:46:27 2023 +0100 Test framework - warn in case that global RouteBuilder is used when not supposed #4381 --- docs/modules/ROOT/pages/user-guide/testing.adoc | 1 + test-framework/junit5-extension-tests/pom.xml | 5 +++ ...lderFalseET.java => RouteBuilderFailureET.java} | 10 +---- ...ilderTest.java => RouteBuilderFailureTest.java} | 35 +++++------------ ...lloRouteBuilder.java => RouteBuilderHello.java} | 2 +- .../extensions/routeBuilder/RouteBuilderUtil.java | 45 ++++++++++++++++++++++ ...ilderTrueET.java => RouteBuilderWarningET.java} | 7 +--- ...ource.java => RouteBuilderWarningResource.java} | 2 +- ...outeBuilderWarningWithProducedBuilderTest.java} | 38 +++++++----------- ...eBuilderWarningWithoutProducedBuilderTest.java} | 38 +++++++----------- .../quarkus/test/CamelQuarkusTestSupport.java | 15 ++++++++ 11 files changed, 108 insertions(+), 90 deletions(-) diff --git a/docs/modules/ROOT/pages/user-guide/testing.adoc b/docs/modules/ROOT/pages/user-guide/testing.adoc index c595e5596d..ccc24f2d29 100644 --- a/docs/modules/ROOT/pages/user-guide/testing.adoc +++ b/docs/modules/ROOT/pages/user-guide/testing.adoc @@ -261,6 +261,7 @@ build together, exclusion behavior is implemented into `CamelQuarkusTestSupport` * JUnit Jupiter callbacks (`BeforeEachCallback`, `AfterEachCallback`, `AfterAllCallback`, `BeforeAllCallback`, `BeforeTestExecutionCallback` and `AfterTestExecutionCallback`) and JUnit Jupiter annotations (`@BeforeEach`, `@AfterEach`, `@AfterAll` and `@BeforeAll`) might not work correctly. See the https://quarkus.io/guides/getting-started-testing#enrichment-via-quarkustestcallback[documentation]. * If there is an unaffected route, when using advice with, it's important to execute method `CamelQuarkusTestSupport.startRouteDefinitions()` manually from the unit test after you are done doing all the advice with * Do not use `@Produces` with `RouteBuilder` use the overridden method `createRouteBuilder()` instead. `@Produces` with `RouteBuilder` might not work correctly. +* Please use `quarkus.camel.routes-discovery.exclude-patterns` and/or `quarkus.camel.routes-discovery.include-patterns` to configure which routes from the application (`src/main/java`) are used during the tests execution. See more details in the xref:reference/extensions/core.adoc[documentation]. [source,java] ---- diff --git a/test-framework/junit5-extension-tests/pom.xml b/test-framework/junit5-extension-tests/pom.xml index c85445d6c2..60c1531e42 100644 --- a/test-framework/junit5-extension-tests/pom.xml +++ b/test-framework/junit5-extension-tests/pom.xml @@ -65,5 +65,10 @@ <artifactId>camel-quarkus-direct</artifactId> <scope>test</scope> </dependency> + <dependency> + <groupId>org.awaitility</groupId> + <artifactId>awaitility</artifactId> + <scope>test</scope> + </dependency> </dependencies> </project> diff --git a/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderFalseET.java b/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderFailureET.java similarity index 90% rename from test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderFalseET.java rename to test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderFailureET.java index 4723080009..be5eedc4c1 100644 --- a/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderFalseET.java +++ b/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderFailureET.java @@ -24,7 +24,7 @@ import org.junit.jupiter.api.Test; import static org.hamcrest.CoreMatchers.is; @QuarkusTest -public class RouteBuilderFalseET extends CamelQuarkusTestSupport { +public class RouteBuilderFailureET extends CamelQuarkusTestSupport { @Override public boolean isUseRouteBuilder() { @@ -40,16 +40,10 @@ public class RouteBuilderFalseET extends CamelQuarkusTestSupport { .statusCode(204); RestAssured.given() - .body("file:target/data/RouteBuilderET?fileName=hello_false.txt") + .body("file:target/data/RouteBuilderET?fileName=hello_true.txt") .post("/hello/message") .then() .statusCode(200) .body(is("Hello (from routeBuilder) Sheldon")); } - - @Test - public void hello2Test() throws Exception { - helloTest(); - } - } diff --git a/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderTest.java b/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderFailureTest.java similarity index 52% copy from test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderTest.java copy to test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderFailureTest.java index 5a78302b0b..8ff06ffbe6 100644 --- a/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderTest.java +++ b/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderFailureTest.java @@ -16,46 +16,29 @@ */ package org.apache.camel.quarkus.test.extensions.routeBuilder; -import java.util.function.Supplier; - import io.quarkus.test.ContinuousTestingTestUtils; import io.quarkus.test.QuarkusDevModeTest; import org.apache.camel.quarkus.test.extensions.continousDev.HelloResource; -import org.jboss.shrinkwrap.api.ShrinkWrap; -import org.jboss.shrinkwrap.api.asset.StringAsset; -import org.jboss.shrinkwrap.api.spec.JavaArchive; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; -public class RouteBuilderTest { +/** + * Scenario when useRouteBuilder is FALSE and NO RouteBuilder is produced -> should fail. + */ +public class RouteBuilderFailureTest { @RegisterExtension - static final QuarkusDevModeTest TEST = new QuarkusDevModeTest() - .setArchiveProducer(new Supplier<>() { - @Override - public JavaArchive get() { - return ShrinkWrap.create(JavaArchive.class) - .addClasses(RouteBuilderResource.class, HelloRouteBuilder.class, HelloResource.class) - .add(new StringAsset( - ContinuousTestingTestUtils.appProperties("camel-quarkus.junit5.message=Sheldon")), - "application.properties"); - } - }) - .setTestArchiveProducer(new Supplier<>() { - @Override - public JavaArchive get() { - return ShrinkWrap.create(JavaArchive.class).addClasses(RouteBuilderFalseET.class, RouteBuilderTrueET.class); - } - }); + static final QuarkusDevModeTest TEST = RouteBuilderUtil.createTestModule(RouteBuilderFailureET.class, + RouteBuilderWarningResource.class, HelloResource.class); @Test - public void checkTests() throws InterruptedException { + public void checkTests() { ContinuousTestingTestUtils utils = new ContinuousTestingTestUtils(); ContinuousTestingTestUtils.TestStatus ts = utils.waitForNextCompletion(); - Assertions.assertEquals(0L, ts.getTestsFailed()); - Assertions.assertEquals(4L, ts.getTestsPassed()); + Assertions.assertEquals(1L, ts.getTestsFailed()); + Assertions.assertEquals(0L, ts.getTestsPassed()); Assertions.assertEquals(0L, ts.getTestsSkipped()); } } diff --git a/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/HelloRouteBuilder.java b/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderHello.java similarity index 95% rename from test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/HelloRouteBuilder.java rename to test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderHello.java index b611cb2e14..b20908bb52 100644 --- a/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/HelloRouteBuilder.java +++ b/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderHello.java @@ -21,7 +21,7 @@ import javax.enterprise.context.ApplicationScoped; import org.apache.camel.builder.RouteBuilder; @ApplicationScoped -public class HelloRouteBuilder extends RouteBuilder { +public class RouteBuilderHello extends RouteBuilder { @Override public void configure() { diff --git a/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderUtil.java b/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderUtil.java new file mode 100644 index 0000000000..0ba81a2f30 --- /dev/null +++ b/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderUtil.java @@ -0,0 +1,45 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.quarkus.test.extensions.routeBuilder; + +import java.util.logging.Level; + +import io.quarkus.test.ContinuousTestingTestUtils; +import io.quarkus.test.QuarkusDevModeTest; +import org.jboss.shrinkwrap.api.ShrinkWrap; +import org.jboss.shrinkwrap.api.asset.StringAsset; +import org.jboss.shrinkwrap.api.spec.JavaArchive; + +public class RouteBuilderUtil { + + static QuarkusDevModeTest createTestModule(Class testClass, Class<?>... archiveClasses) { + QuarkusDevModeTest retVal = new QuarkusDevModeTest() + .setArchiveProducer(() -> { + JavaArchive ja = ShrinkWrap.create(JavaArchive.class) + .addClasses(archiveClasses) + .add(new StringAsset( + ContinuousTestingTestUtils.appProperties("camel-quarkus.junit5.message=Sheldon")), + "application.properties"); + return ja; + }) + .setTestArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class).addClasses(testClass)) + .setLogRecordPredicate(record -> record.getLevel().equals(Level.WARNING)); + + return retVal; + } + +} diff --git a/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderTrueET.java b/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderWarningET.java similarity index 93% rename from test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderTrueET.java rename to test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderWarningET.java index 263dcc3fa2..3a6c04baeb 100644 --- a/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderTrueET.java +++ b/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderWarningET.java @@ -25,7 +25,7 @@ import org.junit.jupiter.api.Test; import static org.hamcrest.CoreMatchers.is; @QuarkusTest -public class RouteBuilderTrueET extends CamelQuarkusTestSupport { +public class RouteBuilderWarningET extends CamelQuarkusTestSupport { @Override public boolean isUseRouteBuilder() { @@ -48,11 +48,6 @@ public class RouteBuilderTrueET extends CamelQuarkusTestSupport { .body(is("Hello (from routeBuilder) Sheldon")); } - @Test - public void hello2Test() throws Exception { - helloTest(); - } - @Override protected RouteBuilder createRouteBuilder() { return new RouteBuilder() { diff --git a/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderResource.java b/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderWarningResource.java similarity index 96% rename from test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderResource.java rename to test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderWarningResource.java index 5cab10c092..758fdaa5b3 100644 --- a/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderResource.java +++ b/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderWarningResource.java @@ -27,7 +27,7 @@ import org.apache.camel.ProducerTemplate; @Path("/routeBuilder") @ApplicationScoped -public class RouteBuilderResource { +public class RouteBuilderWarningResource { @Inject ProducerTemplate producerTemplate; diff --git a/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderTest.java b/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderWarningWithProducedBuilderTest.java similarity index 54% copy from test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderTest.java copy to test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderWarningWithProducedBuilderTest.java index 5a78302b0b..4401699ceb 100644 --- a/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderTest.java +++ b/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderWarningWithProducedBuilderTest.java @@ -16,46 +16,36 @@ */ package org.apache.camel.quarkus.test.extensions.routeBuilder; -import java.util.function.Supplier; +import java.util.concurrent.TimeUnit; import io.quarkus.test.ContinuousTestingTestUtils; import io.quarkus.test.QuarkusDevModeTest; import org.apache.camel.quarkus.test.extensions.continousDev.HelloResource; -import org.jboss.shrinkwrap.api.ShrinkWrap; -import org.jboss.shrinkwrap.api.asset.StringAsset; -import org.jboss.shrinkwrap.api.spec.JavaArchive; +import org.awaitility.Awaitility; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; -public class RouteBuilderTest { +/** + * Scenario when useRouteBuilder is TRUE and RouteBuilder is created via HelloRouteBuilder -> should succeed with + * warning. + */ +public class RouteBuilderWarningWithProducedBuilderTest { @RegisterExtension - static final QuarkusDevModeTest TEST = new QuarkusDevModeTest() - .setArchiveProducer(new Supplier<>() { - @Override - public JavaArchive get() { - return ShrinkWrap.create(JavaArchive.class) - .addClasses(RouteBuilderResource.class, HelloRouteBuilder.class, HelloResource.class) - .add(new StringAsset( - ContinuousTestingTestUtils.appProperties("camel-quarkus.junit5.message=Sheldon")), - "application.properties"); - } - }) - .setTestArchiveProducer(new Supplier<>() { - @Override - public JavaArchive get() { - return ShrinkWrap.create(JavaArchive.class).addClasses(RouteBuilderFalseET.class, RouteBuilderTrueET.class); - } - }); + static final QuarkusDevModeTest TEST = RouteBuilderUtil.createTestModule(RouteBuilderWarningET.class, + RouteBuilderWarningResource.class, HelloResource.class, RouteBuilderHello.class); @Test - public void checkTests() throws InterruptedException { + public void checkTests() { ContinuousTestingTestUtils utils = new ContinuousTestingTestUtils(); ContinuousTestingTestUtils.TestStatus ts = utils.waitForNextCompletion(); Assertions.assertEquals(0L, ts.getTestsFailed()); - Assertions.assertEquals(4L, ts.getTestsPassed()); + Assertions.assertEquals(1L, ts.getTestsPassed()); Assertions.assertEquals(0L, ts.getTestsSkipped()); + + Awaitility.await().atMost(10, TimeUnit.SECONDS).until(() -> TEST.getLogRecords().stream() + .anyMatch(logRecord -> logRecord.getMessage().contains("`RouteBuilder` detected"))); } } diff --git a/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderTest.java b/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderWarningWithoutProducedBuilderTest.java similarity index 54% rename from test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderTest.java rename to test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderWarningWithoutProducedBuilderTest.java index 5a78302b0b..dcd0a0e228 100644 --- a/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderTest.java +++ b/test-framework/junit5-extension-tests/src/test/java/org/apache/camel/quarkus/test/extensions/routeBuilder/RouteBuilderWarningWithoutProducedBuilderTest.java @@ -16,46 +16,36 @@ */ package org.apache.camel.quarkus.test.extensions.routeBuilder; -import java.util.function.Supplier; +import java.util.concurrent.TimeUnit; import io.quarkus.test.ContinuousTestingTestUtils; import io.quarkus.test.QuarkusDevModeTest; import org.apache.camel.quarkus.test.extensions.continousDev.HelloResource; -import org.jboss.shrinkwrap.api.ShrinkWrap; -import org.jboss.shrinkwrap.api.asset.StringAsset; -import org.jboss.shrinkwrap.api.spec.JavaArchive; +import org.awaitility.Awaitility; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; -public class RouteBuilderTest { +/** + * Scenario when useRouteBuilder is TRUE and RouteBuilder is created via HelloRouteBuilder -> should succeed without + * warning. + */ +public class RouteBuilderWarningWithoutProducedBuilderTest { @RegisterExtension - static final QuarkusDevModeTest TEST = new QuarkusDevModeTest() - .setArchiveProducer(new Supplier<>() { - @Override - public JavaArchive get() { - return ShrinkWrap.create(JavaArchive.class) - .addClasses(RouteBuilderResource.class, HelloRouteBuilder.class, HelloResource.class) - .add(new StringAsset( - ContinuousTestingTestUtils.appProperties("camel-quarkus.junit5.message=Sheldon")), - "application.properties"); - } - }) - .setTestArchiveProducer(new Supplier<>() { - @Override - public JavaArchive get() { - return ShrinkWrap.create(JavaArchive.class).addClasses(RouteBuilderFalseET.class, RouteBuilderTrueET.class); - } - }); + static final QuarkusDevModeTest TEST = RouteBuilderUtil.createTestModule(RouteBuilderWarningET.class, + RouteBuilderWarningResource.class, HelloResource.class); @Test - public void checkTests() throws InterruptedException { + public void checkTests() { ContinuousTestingTestUtils utils = new ContinuousTestingTestUtils(); ContinuousTestingTestUtils.TestStatus ts = utils.waitForNextCompletion(); Assertions.assertEquals(0L, ts.getTestsFailed()); - Assertions.assertEquals(4L, ts.getTestsPassed()); + Assertions.assertEquals(1L, ts.getTestsPassed()); Assertions.assertEquals(0L, ts.getTestsSkipped()); + + Awaitility.await().pollDelay(10, TimeUnit.SECONDS).atMost(15, TimeUnit.SECONDS) + .until(() -> TEST.getLogRecords().isEmpty()); } } diff --git a/test-framework/junit5/src/main/java/org/apache/camel/quarkus/test/CamelQuarkusTestSupport.java b/test-framework/junit5/src/main/java/org/apache/camel/quarkus/test/CamelQuarkusTestSupport.java index 66276fa398..3baaaebe2c 100644 --- a/test-framework/junit5/src/main/java/org/apache/camel/quarkus/test/CamelQuarkusTestSupport.java +++ b/test-framework/junit5/src/main/java/org/apache/camel/quarkus/test/CamelQuarkusTestSupport.java @@ -27,6 +27,7 @@ import io.quarkus.test.junit.callback.QuarkusTestMethodContext; import org.apache.camel.CamelContext; import org.apache.camel.Route; import org.apache.camel.Service; +import org.apache.camel.builder.RouteBuilder; import org.apache.camel.model.ModelCamelContext; import org.apache.camel.model.RouteDefinition; import org.apache.camel.quarkus.core.FastCamelContext; @@ -34,6 +35,8 @@ import org.apache.camel.spi.Registry; import org.apache.camel.test.junit5.CamelTestSupport; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.extension.ExtensionContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * The {@link CamelTestSupport} class does not work on Quarkus. This class provides a replacement, which can be used in @@ -72,6 +75,8 @@ import org.junit.jupiter.api.extension.ExtensionContext; public class CamelQuarkusTestSupport extends CamelTestSupport implements QuarkusTestProfile { + private static final Logger LOG = LoggerFactory.getLogger(CamelQuarkusTestSupport.class); + @Inject protected CamelContext context; @@ -258,6 +263,16 @@ public class CamelQuarkusTestSupport extends CamelTestSupport @Override protected final void doQuarkusCheck() { //can run on Quarkus + + //log warning in case that at least one RouteBuilder in the registry, it might mean, that unintentionally + // RouteBuilders are shared across or that RouteBuilder is created with @Produces + if (isUseRouteBuilder() && !context.getRegistry().findByType(RouteBuilder.class).isEmpty()) { + LOG.warn( + "Test with `true` in `isUserRouteBuilder' and `RouteBuilder` detected in the context registry. " + + "All tests will share this routeBuilder from the registry. This is usually not intended. " + + "If `@Produces` is used to create such a RouteBuilder, please refactor the code " + + "by overriding the method `createRouteBuilder()` instead."); + } } void internalAfterAll(QuarkusTestContext context) {