Annotation Type Test


@Target({ANNOTATION_TYPE,METHOD})
@Retention(RUNTIME)
@Documented
@API(status=STABLE,
     since="5.0")
@Testable
public @interface Test
@Test is used to signal that the annotated method is a test method.

@Test methods must not be private or static and must not return a value.

@Test methods may optionally declare parameters to be resolved by ParameterResolvers.

@Test may also be used as a meta-annotation in order to create a custom composed annotation that inherits the semantics of @Test.

Test Execution Order

By default, test methods will be ordered using an algorithm that is deterministic but intentionally nonobvious. This ensures that subsequent runs of a test suite execute test methods in the same order, thereby allowing for repeatable builds. In this context, a test method is any instance method that is directly annotated or meta-annotated with @Test, @RepeatedTest, @ParameterizedTest, @TestFactory, or @TestTemplate.

Although true unit tests typically should not rely on the order in which they are executed, there are times when it is necessary to enforce a specific test method execution order — for example, when writing integration tests or functional tests where the sequence of the tests is important, especially in conjunction with @TestInstance(Lifecycle.PER_CLASS).

To control the order in which test methods are executed, annotate your test class or test interface with @TestMethodOrder and specify the desired MethodOrderer implementation.

Since:
5.0
See Also:
RepeatedTest, ParameterizedTest, TestTemplate, TestFactory, TestInfo, DisplayName, Tag, BeforeAll, AfterAll, BeforeEach, AfterEach