Class CamelQuarkusTestSupport

  • All Implemented Interfaces:
    io.quarkus.test.junit.QuarkusTestProfile, org.junit.jupiter.api.extension.AfterAllCallback, org.junit.jupiter.api.extension.AfterEachCallback, org.junit.jupiter.api.extension.AfterTestExecutionCallback, org.junit.jupiter.api.extension.BeforeAllCallback, org.junit.jupiter.api.extension.BeforeEachCallback, org.junit.jupiter.api.extension.BeforeTestExecutionCallback, org.junit.jupiter.api.extension.Extension

    public class CamelQuarkusTestSupport
    extends org.apache.camel.test.junit5.CamelTestSupport
    implements io.quarkus.test.junit.QuarkusTestProfile
    The CamelTestSupport class does not work on Quarkus. This class provides a replacement, which can be used in JVM mode. There are several differences between CamelTestSupport and this class.
    • Starting and stopping CamelContext in Camel Quarkus is generally bound to starting and stopping the application and this holds also when testing.
    • Starting and stopping the application under test (and thus also CamelContext is under full control of Quarkus JUnit Extension. It prefers keeping the application up and running unless it is told to do otherwise.
    • Hence normally the application under test is started only once for all test classes of the given Maven/Gradle module.
    • To force Quarkus JUnit Extension to restart the application (and thus also `CamelContext`) for a given test class, you need to assign a unique @io.quarkus.test.junit.TestProfile to that class. Check the Quarkus documentation for how you can do that. (Note that QuarkusTestResource has a similar effect.)
    • Camel Quarkus executes the production of beans during the build phase. Because all the tests are build together, exclusion behavior is implemented into CamelQuarkusTestSupport. If a producer of the specific type and name is used in one tests, the instance will be the same for the rest of the tests.
    • JUnit Jupiter callbacks BeforeEachCallback, AfterEachCallback, AfterAllCallback, BeforeAllCallback, BeforeTestExecutionCallback and AfterTestExecutionCallback) might not work correctly. See the documentation. Methods afterAll, afterEach, afterTestExecution, beforeAll and beforeEach are not executed anymore. You should use doAfterAll, doAfterConstruct, doAfterEach, doBeforeEach and doBeforeAll instead of them.
    • Nested Class Summary

      • Nested classes/interfaces inherited from interface io.quarkus.test.junit.QuarkusTestProfile

        io.quarkus.test.junit.QuarkusTestProfile.TestResourceEntry
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected org.apache.camel.CamelContext context  
      • Fields inherited from class org.apache.camel.test.junit5.CamelTestSupport

        camelContextService, camelTestSupportExtension, consumer, extra, fluentTemplate, ROUTE_COVERAGE_ENABLED, template
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void afterAll​(org.junit.jupiter.api.extension.ExtensionContext context)
      This method does nothing.
      void afterEach​(org.junit.jupiter.api.extension.ExtensionContext context)
      This method does nothing.
      void afterTestExecution​(org.junit.jupiter.api.extension.ExtensionContext context)
      This method does nothing All necessary tasks are performed in BeforeEachCallback.beforeEach(QuarkusTestMethodContext) Use doAfterEach(QuarkusTestMethodContext) instead of this method.
      void beforeAll​(org.junit.jupiter.api.extension.ExtensionContext context)
      This method does nothing.
      void beforeEach​(org.junit.jupiter.api.extension.ExtensionContext context)
      This method does nothing.
      protected void bindToRegistry​(org.apache.camel.spi.Registry registry)
      The same functionality as CamelTestSupport.bindToRegistry(Registry).
      org.apache.camel.CamelContext context()
      The same functionality as CamelTestSupport.context() .
      protected org.apache.camel.CamelContext createCamelContext()
      Feel free to override this method for the sake of customizing the instance returned by this implementation.
      protected org.apache.camel.spi.Registry createCamelRegistry()
      This method is not called on Camel Quarkus because the `CamelRegistry` is created and owned by Quarkus CDI container.
      protected void doAfterAll​(io.quarkus.test.junit.callback.QuarkusTestContext context)
      protected void doAfterConstruct()
      Replacement of beforeAll(ExtensionContext) called from AfterConstructCallback.afterConstruct(Object) Execution differs in case of @TestInstance(TestInstance.Lifecycle.PER_METHOD) in which case callback is called before each test (instead of beforeAll(ExtensionContext)).
      protected void doAfterEach​(io.quarkus.test.junit.callback.QuarkusTestMethodContext context)
      protected void doBeforeEach​(io.quarkus.test.junit.callback.QuarkusTestMethodContext context)
      protected void doPostSetup()
      Strategy to perform any post setup after CamelContext is created
      protected void doPreSetup()
      Strategy to perform any pre setup, before CamelContext is created
      protected void doQuarkusCheck()
      Allows running of the CamelTestSupport child in the Quarkus application.
      protected void doStopCamelContext​(org.apache.camel.CamelContext context, org.apache.camel.Service camelContextService)
      Internal disablement of the context stop functionality.
      (package private) void internalAfterAll​(io.quarkus.test.junit.callback.QuarkusTestContext context)  
      (package private) void internalBeforeAll​(org.junit.jupiter.api.extension.ExtensionContext context)  
      (package private) void internalBeforeEach​(org.junit.jupiter.api.extension.ExtensionContext context)  
      boolean isUseAdviceWith()
      Override when using advice with and return true.
      protected void postProcessTest()
      The same functionality as CamelTestSupport.postProcessTest() .
      protected void startCamelContext()
      This method does nothing.
      protected void startRouteDefinitions()
      Helper method to start routeDefinitions (to be used with `adviceWith`).
      protected void stopCamelContext()
      This method stops the Camel context.
      • Methods inherited from class org.apache.camel.test.junit5.CamelTestSupport

        applyCamelPostProcessor, assertExpression, assertMockEndpointsSatisfied, assertMockEndpointsSatisfied, assertPredicate, assertResolveLanguage, assertValidContext, beforeTestExecution, camelContextService, cleanupResources, consumer, createExchangeWithBody, createRouteBuilder, createRouteBuilders, debugAfter, debugBefore, deleteTestDirectory, disableJMX, doPostTearDown, doSetUp, doSpringBootCheck, enableJMX, fileUri, fileUri, fluentTemplate, getCamelContextService, getCurrentTestName, getMandatoryEndpoint, getMandatoryEndpoint, getMockEndpoint, getMockEndpoint, getRouteFilterExcludePattern, getRouteFilterIncludePattern, getShutdownTimeout, hasClassAnnotation, ignoreMissingLocationWithPropertiesComponent, isCreateCamelContextPerClass, isDumpRouteCoverage, isMockEndpoints, isMockEndpointsAndSkip, isUseDebugger, isUseRouteBuilder, replaceRouteFromWith, resetMocks, resolveMandatoryEndpoint, resolveMandatoryEndpoint, sendBodies, sendBody, sendBody, setCamelContextService, setUp, setupResources, setUseRouteBuilder, tearDown, template, testDirectory, testDirectory, testDirectory, testDirectory, testDirectory, testFile, timeTaken, useJmx, useOverridePropertiesWithPropertiesComponent
      • Methods inherited from interface io.quarkus.test.junit.QuarkusTestProfile

        commandLineParameters, disableApplicationLifecycleObservers, disableGlobalTestResources, getConfigOverrides, getConfigProfile, getEnabledAlternatives, runMainMethod, tags, testResources
    • Field Detail

      • context

        @Inject
        protected org.apache.camel.CamelContext context
    • Constructor Detail

      • CamelQuarkusTestSupport

        public CamelQuarkusTestSupport()
    • Method Detail

      • createCamelContext

        protected org.apache.camel.CamelContext createCamelContext()
                                                            throws Exception
        Feel free to override this method for the sake of customizing the instance returned by this implementation. Do not create your own CamelContext instance, because there needs to exist just a single instance owned by Quarkus CDI container. There are checks in place that will make your tests fail if you do otherwise.
        Overrides:
        createCamelContext in class org.apache.camel.test.junit5.CamelTestSupport
        Returns:
        The context from Quarkus CDI container
        Throws:
        Exception - Overridden method has to throw the same Exception as superclass.
      • bindToRegistry

        protected void bindToRegistry​(org.apache.camel.spi.Registry registry)
                               throws Exception
        The same functionality as CamelTestSupport.bindToRegistry(Registry).
        Overrides:
        bindToRegistry in class org.apache.camel.test.junit5.CamelTestSupport
        Throws:
        Exception
      • postProcessTest

        protected void postProcessTest()
                                throws Exception
        The same functionality as CamelTestSupport.postProcessTest() .
        Overrides:
        postProcessTest in class org.apache.camel.test.junit5.CamelTestSupport
        Throws:
        Exception
      • context

        public org.apache.camel.CamelContext context()
        The same functionality as CamelTestSupport.context() .
        Overrides:
        context in class org.apache.camel.test.junit5.CamelTestSupport
      • createCamelRegistry

        protected final org.apache.camel.spi.Registry createCamelRegistry()
        This method is not called on Camel Quarkus because the `CamelRegistry` is created and owned by Quarkus CDI container. If you need to customize the registry upon creation, you may want to override createCamelContext() in the following way:
         @Override
         protected CamelContext createCamelContext() throws Exception {
             CamelContext ctx = super.createCamelContext();
             Registry registry = ctx.getRegistry();
             // do something with the registry...
             return ctx;
         }
         
        Overrides:
        createCamelRegistry in class org.apache.camel.test.junit5.CamelTestSupport
        Returns:
        Never returns any result. UnsupportedOperationException is thrown instead.
      • beforeAll

        public final void beforeAll​(org.junit.jupiter.api.extension.ExtensionContext context)
        This method does nothing. All necessary tasks are performed in BeforeEachCallback.beforeEach(QuarkusTestMethodContext) Use doAfterConstruct() instead of this method.
        Specified by:
        beforeAll in interface org.junit.jupiter.api.extension.BeforeAllCallback
        Overrides:
        beforeAll in class org.apache.camel.test.junit5.CamelTestSupport
      • afterAll

        public final void afterAll​(org.junit.jupiter.api.extension.ExtensionContext context)
        This method does nothing. All necessary tasks are performed in BeforeEachCallback.beforeEach(QuarkusTestMethodContext) Use doAfterAll(QuarkusTestContext) instead of this method.
        Specified by:
        afterAll in interface org.junit.jupiter.api.extension.AfterAllCallback
        Overrides:
        afterAll in class org.apache.camel.test.junit5.CamelTestSupport
      • stopCamelContext

        protected void stopCamelContext()
                                 throws Exception
        This method stops the Camel context. Be aware that on of the limitation that Quarkus brings is that context can not be started (lifecycle f the context is bound to the application) .
        Overrides:
        stopCamelContext in class org.apache.camel.test.junit5.CamelTestSupport
        Throws:
        Exception
      • doQuarkusCheck

        protected final void doQuarkusCheck()
        Allows running of the CamelTestSupport child in the Quarkus application. Method is not intended to be overridden.
        Overrides:
        doQuarkusCheck in class org.apache.camel.test.junit5.CamelTestSupport
      • internalAfterAll

        void internalAfterAll​(io.quarkus.test.junit.callback.QuarkusTestContext context)
      • internalBeforeAll

        void internalBeforeAll​(org.junit.jupiter.api.extension.ExtensionContext context)
      • internalBeforeEach

        void internalBeforeEach​(org.junit.jupiter.api.extension.ExtensionContext context)
                         throws Exception
        Throws:
        Exception
      • doPreSetup

        protected void doPreSetup()
                           throws Exception
        Strategy to perform any pre setup, before CamelContext is created

        Be aware that difference in lifecycle with Quarkus may require a special behavior. If this method is overridden, super.doPreSetup() has to be called.

        Overrides:
        doPreSetup in class org.apache.camel.test.junit5.CamelTestSupport
        Throws:
        Exception
      • doPostSetup

        protected void doPostSetup()
                            throws Exception
        Strategy to perform any post setup after CamelContext is created

        Be aware that difference in lifecycle with Quarkus may require a special behavior. If this method is overridden, super.doPostSetup() has to be called.

        Overrides:
        doPostSetup in class org.apache.camel.test.junit5.CamelTestSupport
        Throws:
        Exception
      • doStopCamelContext

        protected final void doStopCamelContext​(org.apache.camel.CamelContext context,
                                                org.apache.camel.Service camelContextService)
        Internal disablement of the context stop functionality.
        Overrides:
        doStopCamelContext in class org.apache.camel.test.junit5.CamelTestSupport
      • startCamelContext

        protected final void startCamelContext()
        This method does nothing. The context starts together with Quarkus engine.
        Overrides:
        startCamelContext in class org.apache.camel.test.junit5.CamelTestSupport
      • isUseAdviceWith

        public boolean isUseAdviceWith()
        Override when using advice with and return true. This helps knowing advice with is to be used.

        Important: Its important to execute method startRouteDefinitions()} manually from the unit test after you are done doing all the advice with.

        Overrides:
        isUseAdviceWith in class org.apache.camel.test.junit5.CamelTestSupport
        Returns:
        true if you use advice with in your unit tests.
      • startRouteDefinitions

        protected void startRouteDefinitions()
                                      throws Exception
        Helper method to start routeDefinitions (to be used with `adviceWith`).
        Throws:
        Exception