@API(status=STABLE, since="5.0") public interface TestTemplateInvocationContextProvider extends Extension
TestTemplateInvocationContextProvider
defines the API for
Extensions
that wish to provide one or multiple contexts
for the invocation of a
@TestTemplate
method.
This extension point makes it possible to execute a test 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 methods: supportsTestTemplate(org.junit.jupiter.api.extension.ExtensionContext)
and
provideTestTemplateInvocationContexts(org.junit.jupiter.api.extension.ExtensionContext)
. The former is called by the
framework to determine whether this extension wants to act on a test template
that is about to be executed. If so, the latter is called and must return a
Stream
of TestTemplateInvocationContext
instances. Otherwise,
this provider is ignored for the execution of the current test template.
A provider that has returned true
from its supportsTestTemplate(org.junit.jupiter.api.extension.ExtensionContext)
method is called active. When multiple providers are active for a
test template method, the Streams
returned by their
provideTestTemplateInvocationContexts(org.junit.jupiter.api.extension.ExtensionContext)
methods will be chained, and
the test template method will be invoked using the contexts of all active
providers.
Implementations must provide a no-args constructor.
TestTemplate
,
TestTemplateInvocationContext
Modifier and Type | Method and Description |
---|---|
Stream<TestTemplateInvocationContext> |
provideTestTemplateInvocationContexts(ExtensionContext context)
Provide invocation contexts
for the test template method represented by the supplied
context . |
boolean |
supportsTestTemplate(ExtensionContext context)
Determine if this provider supports providing invocation contexts for the
test template method represented by the supplied
context . |
boolean supportsTestTemplate(ExtensionContext context)
context
.context
- the extension context for the test template method about
to be invoked; never null
true
if this provider can provide invocation contextsprovideTestTemplateInvocationContexts(org.junit.jupiter.api.extension.ExtensionContext)
,
ExtensionContext
Stream<TestTemplateInvocationContext> provideTestTemplateInvocationContexts(ExtensionContext context)
context
.
This method is only called by the framework if supportsTestTemplate(org.junit.jupiter.api.extension.ExtensionContext)
previously returned true
for the same ExtensionContext
.
Thus, this method must not return an empty Stream
.
The returned Stream
will be properly closed by calling
BaseStream.close()
, making it safe to use a resource such as
Files.lines()
.
context
- the extension context for the test template method about
to be invoked; never null
Stream
of TestTemplateInvocationContext
instances for the invocation of the test template method; never null
or emptysupportsTestTemplate(org.junit.jupiter.api.extension.ExtensionContext)
,
ExtensionContext