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

    Modifier and Type
    Method
    Description
    void
    initializeExtensions(Class<?> testClass, Object testInstance)
    Initialize all registered extensions for the supplied testClass using the supplied testInstance.
    void
    registerExtension(Class<? extends Extension> extensionType)
    Instantiate an extension of the given type using its default constructor and register it in the registry.
    void
    registerExtension(Extension extension, Object source)
    Register the supplied Extension, without checking if an extension of that type has already been registered.
    void
    Register the supplied Extension as a synthetic extension, without checking if an extension of that type has already been registered.
    void
    registerUninitializedExtension(Class<?> testClass, Field source, Function<Object,? extends 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 Details

    • registerExtension

      void registerExtension(Class<? extends 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(Extension extension, 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(Extension extension, 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:
    • registerUninitializedExtension

      void registerUninitializedExtension(Class<?> testClass, Field source, Function<Object,? extends 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(Class<?> testClass, 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