/*
* Copyright 2015-2020 the original author or authors.
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License v2.0 which
* accompanies this distribution and is available at
*
* https://www.eclipse.org/legal/epl-v20.html
*/
package org.junit.jupiter.api.extension;
import static org.apiguardian.api.API.Status.STABLE;
import org.apiguardian.api.API;
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.
Constructor Requirements
Consult the documentation in Extension
for details on constructor requirements.
See Also: Since: 5.0
/**
* {@code TestInstancePostProcessor} defines the API for {@link Extension
* Extensions} that wish to <em>post-process</em> test instances.
*
* <p>Common use cases include injecting dependencies into the test
* instance, invoking custom initialization methods on the test instance,
* etc.
*
* <p>Extensions that implement {@code TestInstancePostProcessor} must be
* registered at the class level.
*
* <h3>Constructor Requirements</h3>
*
* <p>Consult the documentation in {@link Extension} for details on
* constructor requirements.
*
* @since 5.0
* @see #postProcessTestInstance(Object, ExtensionContext)
* @see TestInstancePreDestroyCallback
* @see TestInstanceFactory
* @see ParameterResolver
*/
@FunctionalInterface
@API(status = STABLE, since = "5.0")
public interface TestInstancePostProcessor extends Extension {
Callback for post-processing the supplied test 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
.
Params: - testInstance – the instance to post-process; never
null
- context – the current extension context; never
null
/**
* Callback for post-processing the supplied test instance.
*
* <p><strong>Note</strong>: the {@code ExtensionContext} supplied to a
* {@code TestInstancePostProcessor} will always return an empty
* {@link java.util.Optional} value from {@link ExtensionContext#getTestInstance()
* getTestInstance()}. A {@code TestInstancePostProcessor} should therefore
* only attempt to process the supplied {@code testInstance}.
*
* @param testInstance the instance to post-process; never {@code null}
* @param context the current extension context; never {@code null}
*/
void postProcessTestInstance(Object testInstance, ExtensionContext context) throws Exception;
}