Interface ExtensionRegistrar
- All Known Implementing Classes:
MutableExtensionRegistry
ExtensionRegistrar
is used to register extensions.- Since:
- 5.5
-
Method Summary
Modifier and TypeMethodDescriptionvoid
initializeExtensions
(Class<?> testClass, Object testInstance) Initialize all registered extensions for the suppliedtestClass
using the suppliedtestInstance
.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 suppliedExtension
, without checking if an extension of that type has already been registered.void
registerSyntheticExtension
(Extension extension, Object source) Register the suppliedExtension
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 suppliedtestClass
to be initialized using the suppliedinitializer
when an instance of the test class is created.
-
Method Details
-
registerExtension
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
Register the suppliedExtension
, without checking if an extension of that type has already been registered.Semantics for Source
If an extension is registered declaratively via
@ExtendWith
, thesource
and theextension
should be the same object. However, if an extension is registered programmatically via@RegisterExtension
, thesource
object should be theField
that is annotated with@RegisterExtension
. Similarly, if an extension is registered programmatically as a lambda expression or method reference, thesource
object should be the underlyingMethod
that implements the extension API.- Parameters:
extension
- the extension to register; nevernull
source
- the source of the extension; nevernull
-
registerSyntheticExtension
Register the suppliedExtension
as a synthetic extension, without checking if an extension of that type has already been registered.- Parameters:
extension
- the extension to register; nevernull
source
- the source of the extension; nevernull
- Since:
- 5.8
- See Also:
-
registerUninitializedExtension
void registerUninitializedExtension(Class<?> testClass, Field source, Function<Object, ? extends Extension> initializer) Register an uninitialized extension for the suppliedtestClass
to be initialized using the suppliedinitializer
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; nevernull
source
- the source of the extension; nevernull
initializer
- the initializer function to be used to create the extension; nevernull
-
initializeExtensions
Initialize all registered extensions for the suppliedtestClass
using the suppliedtestInstance
.- Parameters:
testClass
- the test class for which the extensions are initialized; nevernull
testInstance
- the test instance to be used to initialize the extensions; nevernull
-