/*
* 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;
TestInstancePreDestroyCallback
defines the API for
Extensions
that wish to process test instances after they have been
used in tests but before they are destroyed.
Common use cases include releasing resources that have been created for
the test instance, invoking custom clean-up methods on the test instance, etc.
Extensions that implement TestInstancePreDestroyCallback
must be registered at the class level if the test class is configured with @TestInstance(Lifecycle.PER_CLASS)
semantics. If the test class is configured with @TestInstance(Lifecycle.PER_METHOD)
semantics, TestInstancePreDestroyCallback
extensions may be registered at the class level or at the method level. In the latter case, the TestInstancePreDestroyCallback
extension will only be applied to the test method for which it is registered.
Constructor Requirements
Consult the documentation in Extension
for details on constructor requirements.
See Also: Since: 5.6
/**
* {@code TestInstancePreDestroyCallback} defines the API for {@link Extension
* Extensions} that wish to process test instances <em>after</em> they have been
* used in tests but <em>before</em> they are destroyed.
*
* <p>Common use cases include releasing resources that have been created for
* the test instance, invoking custom clean-up methods on the test instance, etc.
*
* <p>Extensions that implement {@code TestInstancePreDestroyCallback} must be
* registered at the class level if the test class is configured with
* {@link org.junit.jupiter.api.TestInstance.Lifecycle @TestInstance(Lifecycle.PER_CLASS)}
* semantics. If the test class is configured with
* {@link org.junit.jupiter.api.TestInstance.Lifecycle @TestInstance(Lifecycle.PER_METHOD)}
* semantics, {@code TestInstancePreDestroyCallback} extensions may be registered
* at the class level or at the method level. In the latter case, the
* {@code TestInstancePreDestroyCallback} extension will only be applied to the
* test method for which it is registered.
*
* <h3>Constructor Requirements</h3>
*
* <p>Consult the documentation in {@link Extension} for details on constructor
* requirements.
*
* @since 5.6
* @see #preDestroyTestInstance(ExtensionContext)
* @see TestInstancePostProcessor
* @see TestInstanceFactory
* @see ParameterResolver
*/
@FunctionalInterface
@API(status = STABLE, since = "5.7")
public interface TestInstancePreDestroyCallback extends Extension {
Callback for processing a test instance before it is destroyed.
Params: - context – the current extension context; never
null
See Also:
/**
* Callback for processing a test instance before it is destroyed.
*
* @param context the current extension context; never {@code null}
* @see ExtensionContext#getTestInstance()
* @see ExtensionContext#getRequiredTestInstance()
*/
void preDestroyTestInstance(ExtensionContext context) throws Exception;
}