Top Description Methods
org.junit.jupiter.api.extension

public Interface ClassTemplateInvocationContextProvider

extends Extension
Annotations
@API
status:EXPERIMENTAL
since:6.0
Static Imports
org.apiguardian.api.API.Status.EXPERIMENTAL

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 and provideClassTemplateInvocationContexts. 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 method is called active. When multiple providers are active for a class template, the Streams returned by their provideClassTemplateInvocationContexts 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 method if it overrides mayReturnZeroClassTemplateInvocationContexts to return true.

Constructor Requirements

Consult the documentation in Extension for details on constructor requirements.

Since
5.13
See Also
ClassTemplate, ClassTemplateInvocationContext

Method Summary

Modifier and TypeMethod and Description
public default boolean

Returns:

true to allow zero contexts, false to fail execution in case of zero contexts
mayReturnZeroClassTemplateInvocationContexts
(ExtensionContext
the extension context for the class template about to be invoked; never null
context
)

Signal that this provider may provide zero invocation contexts for the class template represented by the supplied context.

public Stream<? extends ClassTemplateInvocationContext>

Returns:

a Stream of ClassTemplateInvocationContext instances for the invocation of the class template; never null
provideClassTemplateInvocationContexts
(ExtensionContext
the extension context for the class template about to be invoked; never null
context
)

Provide invocation contexts for the class template represented by the supplied context.

public boolean

Returns:

true if this provider can provide invocation contexts
supportsClassTemplate
(ExtensionContext
the extension context for the class template about to be invoked; never null
context
)

Determine if this provider supports providing invocation contexts for the class template represented by the supplied context.

Method Detail

mayReturnZeroClassTemplateInvocationContextsback to summary
public default boolean mayReturnZeroClassTemplateInvocationContexts(ExtensionContext context)

Signal that this provider may provide zero invocation contexts for the class template represented by the supplied context.

If this method returns false (which is the default) and the provider returns an empty stream from provideClassTemplateInvocationContexts, this will be considered an execution error. Override this method to return true to ignore the absence of invocation contexts for this provider.

Parameters
context:ExtensionContext

the extension context for the class template about to be invoked; never null

Returns:boolean

true to allow zero contexts, false to fail execution in case of zero contexts

provideClassTemplateInvocationContextsback to summary
public Stream<? extends ClassTemplateInvocationContext> provideClassTemplateInvocationContexts(ExtensionContext context)

Provide invocation contexts for the class template represented by the supplied context.

This method is only called by the framework if supportsClassTemplate previously returned true for the same ExtensionContext; this method is allowed to return an empty Stream but not null.

The returned Stream will be properly closed by calling Stream#close(), making it safe to use a resource such as Files.lines().

Parameters
context:ExtensionContext

the extension context for the class template about to be invoked; never null

Returns:Stream<? extends ClassTemplateInvocationContext>

a Stream of ClassTemplateInvocationContext instances for the invocation of the class template; never null

Exceptions
TemplateInvocationValidationException:
if a validation fails when while providing or closing the java.util.stream.Stream.
See Also
supportsClassTemplate, ExtensionContext
supportsClassTemplateback to summary
public boolean supportsClassTemplate(ExtensionContext context)

Determine if this provider supports providing invocation contexts for the class template represented by the supplied context.

Parameters
context:ExtensionContext

the extension context for the class template about to be invoked; never null

Returns:boolean

true if this provider can provide invocation contexts

See Also
provideClassTemplateInvocationContexts, ExtensionContext