Uploaded image for project: 'Camel'
  1. Camel
  2. CAMEL-20837

camel-test: implement extensions for CamelTestSupport

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Task
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 4.7.0, 4.8.0
    • 4.9.0
    • camel-test
    • None
    • Unknown

    Description

      Over the course of years, multiple additions and changes to the CamelTestSupport class have made it extremely fragile, tightly coupled and hard to maintain.

      Among the problems of this class:

      • Mixing up being responsibilities
        • It is both a JUnit 5 extension and also a base test class
          • Which leads to multiple ways to setup and tear down the test (either via extension methods or via setup/tearDown methods + the setup/tearDown from the tests itself)
        • In addition to being also a JUnit 5 extension and a base test class ... it is ALSO a BreakPoint.
        • And a utility class that provides helper methods (i.e.: providing utility methods for useful operations - send/receive requests)
        • And also a test configuration class in itself (i.e.: allowing tests to configure themselves by overriding methods)
      • Over-complexity
        • the code tries to handle different lifecycle supported by JUnit 
        • along with concurrency
        • as well as setting up and managing the CamelContext
      • Mix up assertions with assumptions
      • Little control about the initialization order of the extension (itself ?) via JUnit's Order annotation
      • Three ways to manage JMX: useJMX, enableJMX, disableJMX.

       

      To make things even worse, the wide open interfaces provided by this class have leaked to other projects (such as Camel Quarkus).

       

      The work on this ticket is related to transforming the ContextLifecycleManagers into full-blown JUnit extensions. As this is a breaking change in a few aspects, this work is planned for 4.9.0 (or whatever is the next release after the next LTS).

       

       

       

       

       

      Attachments

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            orpiske Otavio Rodolfo Piske
            orpiske Otavio Rodolfo Piske
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment