All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.junit.jupiter.api.extension.AfterTestExecutionCallback Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 2015-2024 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;

/**
 * {@code AfterTestExecutionCallback} defines the API for {@link Extension
 * Extensions} that wish to provide additional behavior to tests
 * immediately after an individual test has been executed but
 * before any user-defined teardown methods (e.g.,
 * {@link org.junit.jupiter.api.AfterEach @AfterEach} methods) have been executed
 * for that test.
 *
 * 

Concrete implementations often implement {@link BeforeTestExecutionCallback} * as well. If you wish to have your callbacks wrapped around user-defined * setup and teardown methods, implement {@link BeforeEachCallback} and * {@link AfterEachCallback} instead of {@link BeforeTestExecutionCallback} and * {@link AfterTestExecutionCallback}. * *

Constructor Requirements

* *

Consult the documentation in {@link Extension} for details on * constructor requirements. * *

Wrapping Behavior

* *

JUnit Jupiter guarantees wrapping behavior for multiple * registered extensions that implement lifecycle callbacks such as * {@link BeforeAllCallback}, {@link AfterAllCallback}, * {@link BeforeEachCallback}, {@link AfterEachCallback}, * {@link BeforeTestExecutionCallback}, and {@link AfterTestExecutionCallback}. * *

That means that, given two extensions {@code Extension1} and * {@code Extension2} with {@code Extension1} registered before * {@code Extension2}, any "before" callbacks implemented by {@code Extension1} * are guaranteed to execute before any "before" callbacks implemented by * {@code Extension2}. Similarly, given the two same two extensions registered * in the same order, any "after" callbacks implemented by {@code Extension1} * are guaranteed to execute after any "after" callbacks implemented by * {@code Extension2}. {@code Extension1} is therefore said to wrap * {@code Extension2}. * * @since 5.0 * @see org.junit.jupiter.api.Test * @see BeforeTestExecutionCallback * @see BeforeEachCallback * @see AfterEachCallback * @see BeforeAllCallback * @see AfterAllCallback */ @FunctionalInterface @API(status = STABLE, since = "5.0") public interface AfterTestExecutionCallback extends Extension { /** * Callback that is invoked immediately after an individual test has * been executed but before any user-defined teardown methods have been * executed for that test. * * @param context the current extension context; never {@code null} */ void afterTestExecution(ExtensionContext context) throws Exception; }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy