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) {

Reply via email to