Interface ExtensionRegistrar

  • All Known Implementing Classes:
    MutableExtensionRegistry

    @API(status=INTERNAL,
         since="5.5")
    public interface ExtensionRegistrar
    An ExtensionRegistrar is used to register extensions.
    Since:
    5.5
    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      void initializeExtensions​(java.lang.Class<?> testClass, java.lang.Object testInstance)
      Initialize all registered extensions for the supplied testClass using the supplied testInstance.
      void registerExtension​(java.lang.Class<? extends org.junit.jupiter.api.extension.Extension> extensionType)
      Instantiate an extension of the given type using its default constructor and register it in the registry.
      void registerExtension​(org.junit.jupiter.api.extension.Extension extension, java.lang.Object source)
      Register the supplied Extension, without checking if an extension of that type has already been registered.
      void registerSyntheticExtension​(org.junit.jupiter.api.extension.Extension extension, java.lang.Object source)
      Register the supplied Extension as a synthetic extension, without checking if an extension of that type has already been registered.
      void registerUninitializedExtension​(java.lang.Class<?> testClass, java.lang.reflect.Field source, java.util.function.Function<java.lang.Object,​? extends org.junit.jupiter.api.extension.Extension> initializer)
      Register an uninitialized extension for the supplied testClass to be initialized using the supplied initializer when an instance of the test class is created.
    • Method Detail

      • registerExtension

        void registerExtension​(java.lang.Class<? extends org.junit.jupiter.api.extension.Extension> extensionType)
        Instantiate an extension of the given type using its default constructor and register it in the registry.

        A new Extension should not be registered if an extension of the given type already exists in the registry or a parent registry.

        Parameters:
        extensionType - the type of extension to register
        Since:
        5.8
      • registerExtension

        void registerExtension​(org.junit.jupiter.api.extension.Extension extension,
                               java.lang.Object source)
        Register the supplied Extension, without checking if an extension of that type has already been registered.

        Semantics for Source

        If an extension is registered declaratively via @ExtendWith, the source and the extension should be the same object. However, if an extension is registered programmatically via @RegisterExtension, the source object should be the Field that is annotated with @RegisterExtension. Similarly, if an extension is registered programmatically as a lambda expression or method reference, the source object should be the underlying Method that implements the extension API.

        Parameters:
        extension - the extension to register; never null
        source - the source of the extension; never null
      • registerSyntheticExtension

        void registerSyntheticExtension​(org.junit.jupiter.api.extension.Extension extension,
                                        java.lang.Object source)
        Register the supplied Extension as a synthetic extension, without checking if an extension of that type has already been registered.
        Parameters:
        extension - the extension to register; never null
        source - the source of the extension; never null
        Since:
        5.8
        See Also:
        registerExtension(Extension, Object)
      • registerUninitializedExtension

        void registerUninitializedExtension​(java.lang.Class<?> testClass,
                                            java.lang.reflect.Field source,
                                            java.util.function.Function<java.lang.Object,​? extends org.junit.jupiter.api.extension.Extension> initializer)
        Register an uninitialized extension for the supplied testClass to be initialized using the supplied initializer when an instance of the test class is created.

        Uninitialized extensions are typically registered for fields annotated with @RegisterExtension that cannot be initialized until an instance of the test class is created. Until they are initialized, such extensions are not available for use.

        Parameters:
        testClass - the test class for which the extension is registered; never null
        source - the source of the extension; never null
        initializer - the initializer function to be used to create the extension; never null
      • initializeExtensions

        void initializeExtensions​(java.lang.Class<?> testClass,
                                  java.lang.Object testInstance)
        Initialize all registered extensions for the supplied testClass using the supplied testInstance.
        Parameters:
        testClass - the test class for which the extensions are initialized; never null
        testInstance - the test instance to be used to initialize the extensions; never null