Interface TestInstancePostProcessor

All Superinterfaces:
Extension, TestInstantiationAwareExtension
Functional Interface:
This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

@FunctionalInterface @API(status=STABLE, since="5.0") public interface TestInstancePostProcessor extends TestInstantiationAwareExtension
TestInstancePostProcessor defines the API for Extensions that wish to post-process test instances.

Common use cases include injecting dependencies into the test instance, invoking custom initialization methods on the test instance, etc.

Extensions that implement TestInstancePostProcessor must be registered at the class level, declaratively via a field of the test class, or programmatically via a static field of the test class.

Constructor Requirements

Consult the documentation in Extension for details on constructor requirements.

ExtensionContext Scope

As of JUnit Jupiter 5.12, this API participates in the TestInstantiationAwareExtension contract. Implementations of this API may therefore choose to override getTestInstantiationExtensionContextScope(ExtensionContext) to require a test-method scoped ExtensionContext. See postProcessTestInstance(Object, ExtensionContext) for further details.

Since:
5.0
See Also:
  • Method Details

    • postProcessTestInstance

      void postProcessTestInstance(Object testInstance, ExtensionContext context) throws Exception
      Callback for post-processing the supplied test instance.

      By default, the supplied ExtensionContext represents the test class that's being post-processed. Extensions may override TestInstantiationAwareExtension.getTestInstantiationExtensionContextScope(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.

      Note: the ExtensionContext supplied to a TestInstancePostProcessor will always return an empty Optional value from getTestInstance(). A TestInstancePostProcessor should therefore only attempt to process the supplied testInstance.

      Parameters:
      testInstance - the instance to post-process; never null
      context - the current extension context; never null
      Throws:
      Exception