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

org.junit.jupiter.api.TestInfo Maven / Gradle / Ivy

There is a newer version: 5.11.3
Show 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;

import static org.apiguardian.api.API.Status.STABLE;

import java.lang.reflect.Method;
import java.util.Optional;
import java.util.Set;

import org.apiguardian.api.API;

/**
 * {@code TestInfo} is used to inject information about the current test or
 * container into to {@code @Test}, {@code @RepeatedTest},
 * {@code @ParameterizedTest}, {@code @TestFactory}, {@code @BeforeEach},
 * {@code @AfterEach}, {@code @BeforeAll}, and {@code @AfterAll} methods.
 *
 * 

If a method parameter is of type {@link TestInfo}, JUnit will supply * an instance of {@code TestInfo} corresponding to the current test or * container as the value for the parameter. * * @since 5.0 * @see Test * @see RepeatedTest * @see TestFactory * @see BeforeEach * @see AfterEach * @see BeforeAll * @see AfterAll * @see DisplayName * @see Tag */ @API(status = STABLE, since = "5.0") public interface TestInfo { /** * Get the display name of the current test or container. * *

The display name is either a default name or a custom name configured * via {@link DisplayName @DisplayName}. * *

Default Display Names

* *

If the context in which {@code TestInfo} is used is at the container * level, the default display name is generated based on the name of the * test class. For top-level and {@link Nested @Nested} test classes, the * default display name is the {@linkplain Class#getSimpleName simple name} * of the class. For {@code static} nested test classes, the default display * name is the default display name for the enclosing class concatenated with * the {@linkplain Class#getSimpleName simple name} of the {@code static} * nested class, separated by a dollar sign ({@code $}). For example, the * default display names for the following test classes are * {@code TopLevelTests}, {@code NestedTests}, and {@code TopLevelTests$StaticTests}. * *

	 *   class TopLevelTests {
	 *
	 *      {@literal @}Nested
	 *      class NestedTests {}
	 *
	 *      static class StaticTests {}
	 *   }
	 * 
* *

If the context in which {@code TestInfo} is used is at the test level, * the default display name is the name of the test method concatenated with * a comma-separated list of {@linkplain Class#getSimpleName simple names} * of the parameter types in parentheses. For example, the default display * name for the following test method is {@code testUser(TestInfo, User)}. * *

	 *   {@literal @}Test
	 *   void testUser(TestInfo testInfo, {@literal @}Mock User user) {}
	 * 
* *

Note that display names are typically used for test reporting in IDEs * and build tools and may contain spaces, special characters, and even emoji. * * @return the display name of the test or container; never {@code null} or blank */ String getDisplayName(); /** * Get the set of all tags for the current test or container. * *

Tags may be declared directly on the test element or inherited * from an outer context. */ Set getTags(); /** * Get the {@link Class} associated with the current test or container, if available. */ Optional> getTestClass(); /** * Get the {@link Method} associated with the current test or container, if available. */ Optional getTestMethod(); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy