Class Extension_Mats

All Implemented Interfaces:
org.junit.jupiter.api.extension.AfterAllCallback, org.junit.jupiter.api.extension.BeforeAllCallback, org.junit.jupiter.api.extension.Extension

public class Extension_Mats extends AbstractMatsTest<String> implements org.junit.jupiter.api.extension.BeforeAllCallback, org.junit.jupiter.api.extension.AfterAllCallback
Provides a full MATS harness for unit testing by creating MatsFactory utilizing an in-vm Active MQ broker, and optionally a TestH2DataSource for database tests.

Notice: If you are in a Spring-context, this is probably not what you are looking for, as the MatsFactory then should reside as a bean in the Spring context. Look in the 'mats-spring-test' package for testing tools for Spring.

By default the extension will create a MatsSerializerJson which will be the serializer utilized by the created MatsFactory. Should one want to use a different serializer which serializes to the type of String then this can be specified using the method create(MatsSerializer). However should one want to specify a serializer which serializes into anything other than String, then Extension_MatsGeneric offers this possibility.

Extension_Mats shall be annotated with @RegisterExtension and the instance field shall be static for the Jupiter life cycle to pick up the extension at the correct time. Extension_Mats can be viewed in the same manner as one would view a ClassRule in JUnit4.

Example:

     public class YourTestClass {
         @RegisterExtension
         public static final Extension_Mats MATS = Extension_Mats.createRule()
     }
 
To get a variant that has a TestH2DataSource contained, and the MatsFactory set up with transactional handling of that, use the createWithDb() methods. In this case, you might want to clean the database before each test method, which can be accomplished as such:
     public class YourTestClass {
         @RegisterExtension
         public static final Extension_Mats MATS = Extension_Mats.createRule()

         @Before  // Will clean the database before each test - if this is what you want.
         public void cleanDatabase() {
             MATS.getDataSource().cleanDatabase()
         }
     }
 
See Also:
  • Constructor Details

  • Method Details

    • create

      public static Extension_Mats create()
      Creates an Extension_Mats utilizing the MATS default serializer
    • create

      public static Extension_Mats create(MatsSerializer<String> matsSerializer)
      Creates an Extension_Mats utilizing the user provided MatsSerializer which serializes to the type of String.
    • createWithDb

      public static Extension_Mats createWithDb()
    • createWithDb

      public static Extension_Mats createWithDb(MatsSerializer<String> matsSerializer)
    • beforeAll

      public void beforeAll(org.junit.jupiter.api.extension.ExtensionContext context)
      Executed by Jupiter before any test method is executed. (Once at the start of the class.)
      Specified by:
      beforeAll in interface org.junit.jupiter.api.extension.BeforeAllCallback
    • afterAll

      public void afterAll(org.junit.jupiter.api.extension.ExtensionContext context)
      Executed by Jupiter after all test methods have been executed. (Once at the end of the class.)
      Specified by:
      afterAll in interface org.junit.jupiter.api.extension.AfterAllCallback