@Target(value={TYPE,METHOD})
@Retention(value=RUNTIME)
@Documented
@Inherited
@API(status=STABLE,
since="5.7")
public @interface Timeout
@Timeout is used to define a timeout for a method or all testable
methods within one class and its @Nested classes.
This annotation may also be used on lifecycle methods annotated with
@BeforeAll, @BeforeEach,
@AfterEach, or @AfterAll.
Applying this annotation to a test class has the same effect as applying
it to all testable methods, i.e. all methods annotated or meta-annotated with
@Test, @TestFactory, or
@TestTemplate, but not to its lifecycle methods.
If this annotation is not present, no timeout will be used unless a default timeout is defined via one of the following configuration parameters:
@Test methods@TestTemplate methods@TestFactory methods@BeforeAll methods@BeforeEach methods@AfterEach methods@AfterAll methodsMore specific configuration parameters override less specific ones. For example, "junit.jupiter.execution.timeout.test.method.default" overrides "junit.jupiter.execution.timeout.testable.method.default" which overrides "junit.jupiter.execution.timeout.default".
Values for timeouts must be in the following, case-insensitive format:
<number> [ns|μs|ms|s|m|h|d]. The space between the number and the
unit may be omitted. Specifying no unit is equivalent to using seconds.
| Value | Equivalent annotation |
|---|---|
42 | @Timeout(42) |
42 ns | @Timeout(value = 42, unit = NANOSECONDS) |
42 μs | @Timeout(value = 42, unit = MICROSECONDS) |
42 ms | @Timeout(value = 42, unit = MILLISECONDS) |
42 s | @Timeout(value = 42, unit = SECONDS) |
42 m | @Timeout(value = 42, unit = MINUTES) |
42 h | @Timeout(value = 42, unit = HOURS) |
42 d | @Timeout(value = 42, unit = DAYS) |
You may use the "junit.jupiter.execution.timeout.mode" configuration parameter to explicitly enable or disable timeouts.
Supported values:
enabled: enables timeouts
disabled: disables timeouts
disabled_on_debug: disables timeouts while debugging
| Modifier and Type | Fields and Description |
|---|---|
static java.lang.String |
DEFAULT_AFTER_ALL_METHOD_TIMEOUT_PROPERTY_NAME
Property name used to set the default timeout for all
@AfterAll methods: "junit.jupiter.execution.timeout.afterall.method.default". |
static java.lang.String |
DEFAULT_AFTER_EACH_METHOD_TIMEOUT_PROPERTY_NAME
Property name used to set the default timeout for all
@AfterEach methods: "junit.jupiter.execution.timeout.aftereach.method.default". |
static java.lang.String |
DEFAULT_BEFORE_ALL_METHOD_TIMEOUT_PROPERTY_NAME
Property name used to set the default timeout for all
@BeforeAll methods: "junit.jupiter.execution.timeout.beforeall.method.default". |
static java.lang.String |
DEFAULT_BEFORE_EACH_METHOD_TIMEOUT_PROPERTY_NAME
Property name used to set the default timeout for all
@BeforeEach methods: "junit.jupiter.execution.timeout.beforeeach.method.default". |
static java.lang.String |
DEFAULT_LIFECYCLE_METHOD_TIMEOUT_PROPERTY_NAME
Property name used to set the default timeout for all lifecycle methods:
"junit.jupiter.execution.timeout.lifecycle.method.default".
|
static java.lang.String |
DEFAULT_TEST_FACTORY_METHOD_TIMEOUT_PROPERTY_NAME
Property name used to set the default timeout for all
@TestFactory methods: "junit.jupiter.execution.timeout.testfactory.method.default". |
static java.lang.String |
DEFAULT_TEST_METHOD_TIMEOUT_PROPERTY_NAME
Property name used to set the default timeout for all
@Test
methods: "junit.jupiter.execution.timeout.test.method.default". |
static java.lang.String |
DEFAULT_TEST_TEMPLATE_METHOD_TIMEOUT_PROPERTY_NAME
Property name used to set the default timeout for all
@TestTemplate methods: "junit.jupiter.execution.timeout.testtemplate.method.default". |
static java.lang.String |
DEFAULT_TESTABLE_METHOD_TIMEOUT_PROPERTY_NAME
Property name used to set the default timeout for all testable methods:
"junit.jupiter.execution.timeout.testable.method.default".
|
static java.lang.String |
DEFAULT_TIMEOUT_PROPERTY_NAME
Property name used to set the default timeout for all testable and
lifecycle methods: "junit.jupiter.execution.timeout.default".
|
static java.lang.String |
DEFAULT_TIMEOUT_THREAD_MODE_PROPERTY_NAME
Property name used to set the default thread mode for all testable and lifecycle
methods: "junit.jupiter.execution.timeout.thread.mode.default".
|
static java.lang.String |
TIMEOUT_MODE_PROPERTY_NAME
Property name used to configure whether timeouts are applied to tests: "junit.jupiter.execution.timeout.mode".
|
| Modifier and Type | Required Element and Description |
|---|---|
long |
value
The duration of this timeout.
|
| Modifier and Type | Optional Element and Description |
|---|---|
Timeout.ThreadMode |
threadMode
The thread mode of this timeout.
|
java.util.concurrent.TimeUnit |
unit
The time unit of this timeout.
|
@API(status=STABLE,
since="5.9")
public static final java.lang.String DEFAULT_TIMEOUT_PROPERTY_NAME
The value of this property will be used unless overridden by a more
specific property or a @Timeout
annotation present on the method or on an enclosing test class (for
testable methods).
Please refer to the class description for the definition of supported values.
@API(status=STABLE,
since="5.9")
public static final java.lang.String DEFAULT_TESTABLE_METHOD_TIMEOUT_PROPERTY_NAME
The value of this property will be used unless overridden by a more
specific property or a @Timeout
annotation present on the testable method or on an enclosing test class.
This property overrides the "junit.jupiter.execution.timeout.default" property.
Please refer to the class description for the definition of supported values.
@API(status=STABLE,
since="5.9")
public static final java.lang.String DEFAULT_TEST_METHOD_TIMEOUT_PROPERTY_NAME
@Test
methods: "junit.jupiter.execution.timeout.test.method.default".
The value of this property will be used unless overridden by a
@Timeout annotation present on the @Test
method or on an enclosing test class.
This property overrides the "junit.jupiter.execution.timeout.testable.method.default" property.
Please refer to the class description for the definition of supported values.
@API(status=STABLE,
since="5.9")
public static final java.lang.String DEFAULT_TEST_TEMPLATE_METHOD_TIMEOUT_PROPERTY_NAME
@TestTemplate methods: "junit.jupiter.execution.timeout.testtemplate.method.default".
The value of this property will be used unless overridden by a
@Timeout annotation present on the
@TestTemplate method or on an enclosing test class.
This property overrides the "junit.jupiter.execution.timeout.testable.method.default" property.
Please refer to the class description for the definition of supported values.
@API(status=STABLE,
since="5.9")
public static final java.lang.String DEFAULT_TEST_FACTORY_METHOD_TIMEOUT_PROPERTY_NAME
@TestFactory methods: "junit.jupiter.execution.timeout.testfactory.method.default".
The value of this property will be used unless overridden by a
@Timeout annotation present on the
@TestFactory method or on an enclosing test class.
This property overrides the "junit.jupiter.execution.timeout.testable.method.default" property.
Please refer to the class description for the definition of supported values.
@API(status=STABLE,
since="5.9")
public static final java.lang.String DEFAULT_LIFECYCLE_METHOD_TIMEOUT_PROPERTY_NAME
The value of this property will be used unless overridden by a more
specific property or a @Timeout annotation present on the
lifecycle method.
This property overrides the "junit.jupiter.execution.timeout.default" property.
Please refer to the class description for the definition of supported values.
@API(status=STABLE,
since="5.9")
public static final java.lang.String DEFAULT_BEFORE_ALL_METHOD_TIMEOUT_PROPERTY_NAME
@BeforeAll methods: "junit.jupiter.execution.timeout.beforeall.method.default".
The value of this property will be used unless overridden by a
@Timeout annotation present on the
@BeforeAll method.
This property overrides the "junit.jupiter.execution.timeout.lifecycle.method.default" property.
Please refer to the class description for the definition of supported values.
@API(status=STABLE,
since="5.9")
public static final java.lang.String DEFAULT_BEFORE_EACH_METHOD_TIMEOUT_PROPERTY_NAME
@BeforeEach methods: "junit.jupiter.execution.timeout.beforeeach.method.default".
The value of this property will be used unless overridden by a
@Timeout annotation present on the
@BeforeEach method.
This property overrides the "junit.jupiter.execution.timeout.lifecycle.method.default" property.
Please refer to the class description for the definition of supported values.
@API(status=STABLE,
since="5.9")
public static final java.lang.String DEFAULT_AFTER_EACH_METHOD_TIMEOUT_PROPERTY_NAME
@AfterEach methods: "junit.jupiter.execution.timeout.aftereach.method.default".
The value of this property will be used unless overridden by a
@Timeout annotation present on the
@AfterEach method.
This property overrides the "junit.jupiter.execution.timeout.lifecycle.method.default" property.
Please refer to the class description for the definition of supported values.
@API(status=STABLE,
since="5.9")
public static final java.lang.String DEFAULT_AFTER_ALL_METHOD_TIMEOUT_PROPERTY_NAME
@AfterAll methods: "junit.jupiter.execution.timeout.afterall.method.default".
The value of this property will be used unless overridden by a
@Timeout annotation present on the
@AfterAll method.
This property overrides the "junit.jupiter.execution.timeout.lifecycle.method.default" property.
Please refer to the class description for the definition of supported values.
@API(status=STABLE,
since="5.9")
public static final java.lang.String TIMEOUT_MODE_PROPERTY_NAME
The value of this property will be used to toggle whether
@Timeout is applied to tests.
enabled: enables timeouts
disabled: disables timeouts
disabled_on_debug: disables timeouts while debugging
If not specified, the default is enabled.
@API(status=EXPERIMENTAL,
since="5.9")
public static final java.lang.String DEFAULT_TIMEOUT_THREAD_MODE_PROPERTY_NAME
The value of this property will be used unless overridden by a @Timeout
annotation present on the method or on an enclosing test class (for testable methods).
The supported values are SAME_THREAD or SEPARATE_THREAD, if none is provided
SAME_THREAD is used as default.
public abstract long value
public abstract java.util.concurrent.TimeUnit unit
TimeUnit@API(status=EXPERIMENTAL,
since="5.9")
public abstract Timeout.ThreadMode threadMode
Timeout.ThreadMode