Interface ParameterResolver
- All Superinterfaces:
Extension,TestInstantiationAwareExtension
- All Known Implementing Classes:
TypeBasedParameterResolver
ParameterResolver defines the API for Extensions
that wish to dynamically resolve arguments for parameters
at runtime.
If a constructor for a test class or a
@Test,
@BeforeEach,
@AfterEach,
@BeforeAll, or
@AfterAll method declares a parameter,
an argument for the parameter must be resolved at runtime by a
ParameterResolver.
By default, when the methods in this interface are called for a test class
constructor, the supplied ExtensionContext represents the test
class that's about to be instantiated. Extensions may override
TestInstantiationAwareExtension.getTestInstantiationExtensionContextScope(org.junit.jupiter.api.extension.ExtensionContext) to return
TEST_METHOD in order to change
the scope of the ExtensionContext to the test method, unless the
PER_CLASS lifecycle is used.
Changing the scope makes test-specific data available to the
implementation of this method and allows keeping state on the test level
by using the provided Store instance.
Constructor Requirements
Consult the documentation in Extension for details on
constructor requirements.
- Since:
- 5.0
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.junit.jupiter.api.extension.TestInstantiationAwareExtension
TestInstantiationAwareExtension.ExtensionContextScope -
Method Summary
Modifier and TypeMethodDescription@Nullable ObjectresolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) Resolve an argument for theParameterin the suppliedParameterContextfor the suppliedExtensionContext.booleansupportsParameter(ParameterContext parameterContext, ExtensionContext extensionContext) Determine if this resolver supports resolution of an argument for theParameterin the suppliedParameterContextfor the suppliedExtensionContext.Methods inherited from interface org.junit.jupiter.api.extension.TestInstantiationAwareExtension
getTestInstantiationExtensionContextScope
-
Method Details
-
supportsParameter
boolean supportsParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException Determine if this resolver supports resolution of an argument for theParameterin the suppliedParameterContextfor the suppliedExtensionContext.The
MethodorConstructorin which the parameter is declared can be retrieved viaParameterContext.getDeclaringExecutable().- Parameters:
parameterContext- the context for the parameter for which an argument should be resolved; nevernullextensionContext- the extension context for theExecutableabout to be invoked; nevernull- Returns:
trueif this resolver can resolve an argument for the parameter- Throws:
ParameterResolutionException- See Also:
-
resolveParameter
@Nullable Object resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException Resolve an argument for theParameterin the suppliedParameterContextfor the suppliedExtensionContext.This method is only called by the framework if
supportsParameter(org.junit.jupiter.api.extension.ParameterContext, org.junit.jupiter.api.extension.ExtensionContext)previously returnedtruefor the sameParameterContextandExtensionContext.The
MethodorConstructorin which the parameter is declared can be retrieved viaParameterContext.getDeclaringExecutable().- Parameters:
parameterContext- the context for the parameter for which an argument should be resolved; nevernullextensionContext- the extension context for theExecutableabout to be invoked; nevernull- Returns:
- the resolved argument for the parameter; may only be
nullif the parameter type is not a primitive - Throws:
ParameterResolutionException- See Also:
-