Interface ClassTemplateInvocationContextProvider
- All Superinterfaces:
Extension
ClassTemplateInvocationContextProvider
defines the API for
Extensions
that wish to provide one or multiple contexts
for the invocation of a @ClassTemplate
.
This extension point makes it possible to execute a class template in different contexts — for example, with different parameters, by preparing the test class instance differently, or multiple times without modifying the context.
This interface defines two main methods:
supportsClassTemplate(org.junit.jupiter.api.extension.ExtensionContext)
and
provideClassTemplateInvocationContexts(org.junit.jupiter.api.extension.ExtensionContext)
. The former is called by the
framework to determine whether this extension wants to act on a container
template that is about to be executed. If so, the latter is called and must
return a Stream
of ClassTemplateInvocationContext
instances.
Otherwise, this provider is ignored for the execution of the current class
template.
A provider that has returned true
from its
supportsClassTemplate(org.junit.jupiter.api.extension.ExtensionContext)
method is called active. When
multiple providers are active for a class template, the
Streams
returned by their
provideClassTemplateInvocationContexts(org.junit.jupiter.api.extension.ExtensionContext)
methods will be chained, and
the class template method will be invoked using the contexts of all active
providers.
An active provider may return zero invocation contexts from its
provideClassTemplateInvocationContexts(org.junit.jupiter.api.extension.ExtensionContext)
method if it overrides
mayReturnZeroClassTemplateInvocationContexts(org.junit.jupiter.api.extension.ExtensionContext)
to return
true
.
Constructor Requirements
Consult the documentation in Extension
for details on
constructor requirements.
- Since:
- 5.13
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptiondefault boolean
Signal that this provider may provide zero invocation contexts for the class template represented by the suppliedcontext
.Stream
<? extends ClassTemplateInvocationContext> Provide invocation contexts for the class template represented by the suppliedcontext
.boolean
supportsClassTemplate
(ExtensionContext context) Determine if this provider supports providing invocation contexts for the class template represented by the suppliedcontext
.
-
Method Details
-
supportsClassTemplate
Determine if this provider supports providing invocation contexts for the class template represented by the suppliedcontext
.- Parameters:
context
- the extension context for the class template about to be invoked; nevernull
- Returns:
true
if this provider can provide invocation contexts- See Also:
-
provideClassTemplateInvocationContexts
Stream<? extends ClassTemplateInvocationContext> provideClassTemplateInvocationContexts(ExtensionContext context) Provide invocation contexts for the class template represented by the suppliedcontext
.This method is only called by the framework if
supportsClassTemplate(org.junit.jupiter.api.extension.ExtensionContext)
previously returnedtrue
for the sameExtensionContext
; this method is allowed to return an emptyStream
but notnull
.The returned
Stream
will be properly closed by callingBaseStream.close()
, making it safe to use a resource such asFiles.lines()
.- Parameters:
context
- the extension context for the class template about to be invoked; nevernull
- Returns:
- a
Stream
ofClassTemplateInvocationContext
instances for the invocation of the class template; nevernull
- Throws:
TemplateInvocationValidationException
- if a validation fails when while providing or closing theStream
.- See Also:
-
mayReturnZeroClassTemplateInvocationContexts
Signal that this provider may provide zero invocation contexts for the class template represented by the suppliedcontext
.If this method returns
false
(which is the default) and the provider returns an empty stream fromprovideClassTemplateInvocationContexts(org.junit.jupiter.api.extension.ExtensionContext)
, this will be considered an execution error. Override this method to returntrue
to ignore the absence of invocation contexts for this provider.- Parameters:
context
- the extension context for the class template about to be invoked; nevernull
- Returns:
true
to allow zero contexts,false
to fail execution in case of zero contexts
-