在JUnit 5中,对所有测试强制执行全局超时的最佳方法是什么?
我看到JUnit 4有一个@Rule特性,但这已经在JUnit 5中删除了,而且我不希望每次测试都要复制粘贴assertTimeoutPreemptively。
发布于 2020-05-18 16:06:12
您提到了JUnit 4 Timeout @Rule,它允许在每个测试类的基础上指定超时。JUnit 5.5在@Timeout注释中有一个直接的等价物。这可以以与JUnit 4规则相同的方式应用于类级别,在这种情况下,它适用于类及其@Nested类中的所有测试。它还可以应用于单个@Test或生命周期(@BeforeAll、@BeforeEach、@AfterEach或@AfterAll)方法。
@Timeout注释允许您声明,如果测试、测试工厂、测试模板或生命周期方法的执行时间超过了给定的持续时间,它就会失败。持续时间单位默认为秒,但是可配置的。 ..。 要对测试类及其所有@Nested类中的所有测试方法应用相同的超时,可以在类级别声明@Timeout注释。然后,它将应用于该类及其@Nested类中的所有测试、测试工厂和测试模板方法,除非被特定方法或@Nested类上的@Timeout注释覆盖。请注意,在类级别声明的@Timeout注释不应用于生命周期方法。
发布于 2020-01-23 13:03:27
Junit 5.5确实支持“全局超时”。只要看看相应属性旋钮的文档。
例如,尝试打开文件src/test/resources/junit-platform.properties并粘贴到那里:
junit.jupiter.execution.timeout.default=42 ms发布于 2017-11-01 14:05:31
在JUnit版本5.5之前,不可能对JUnit木星中的测试强制执行全局的、先发制人的超时。此功能是作为JUnit 5.5的一个实验性特性添加的。
要查看围绕此特性的讨论,请参见以下问题:https://github.com/junit-team/junit5/issues/80
https://stackoverflow.com/questions/47041313
复制相似问题