JUnit5——全局超时?

JUnit5——全局超时?,junit,junit5,Junit,Junit5,在JUnit5中,对所有测试强制执行全局超时的最佳方法是什么 我看到JUnit4有一个@Rule特性,但它在JUnit5中被删除了。我不希望每次测试都要复制粘贴。在JUnit 5.5版本之前,JUnit Jupiter中的测试不可能强制执行全局、抢占式超时。此功能作为实验性功能添加到JUnit5.5中 要查看有关此功能的讨论,请参阅以下问题:Junit 5.5不支持“全局超时”。看看吧 例如,尝试打开文件src/test/resources/junit platform.properties并粘

在JUnit5中,对所有测试强制执行全局超时的最佳方法是什么


我看到JUnit4有一个
@Rule
特性,但它在JUnit5中被删除了。我不希望每次测试都要复制粘贴。

在JUnit 5.5版本之前,JUnit Jupiter中的测试不可能强制执行全局、抢占式超时。此功能作为实验性功能添加到JUnit5.5中

要查看有关此功能的讨论,请参阅以下问题:

Junit 5.5不支持“全局超时”。看看吧

例如,尝试打开文件
src/test/resources/junit platform.properties
并粘贴到其中:

junit.jupiter.execution.timeout.default=42 ms
您提到了JUnit4,它允许在每个测试类的基础上指定超时。JUnit5.5在注释中有一个直接的等价物。这可以以与JUnit4规则相同的方式应用于类级别,在这种情况下,它应用于类及其
@嵌套的
类中的所有测试。它还可以应用于单个的
@测试
或生命周期(
@beforeach
@beforeach
@AfterEach
)方法

根据:

@Timeout
注释允许声明测试、测试工厂、测试模板或生命周期方法在其执行时间超过给定持续时间时应失败。持续时间的时间单位默认为秒,但可配置

[……]

要将相同的超时应用于测试类及其所有嵌套的
@类中的所有测试方法,可以在类级别声明
@timeout
注释。然后,它将应用于该类及其
@Nested
类中的所有测试、测试工厂和测试模板方法,除非被特定方法或
@Nested
类上的
@Timeout
注释覆盖。请注意,
@Timeout
在类级别声明的注释不应用于生命周期方法