学生在这里。在JUnit 5中,对所有测试强制执行全局超时的最佳方法是什么?
我看到JUnit 4具有一项@Rule功能,但是在JUnit 5中已将其删除。我希望不必assertTimeoutPreemptively为每个测试都复制粘贴。
Junit 5.5 确实支持“全局超时”。只需查看相应属性旋钮的文档即可。
例如,尝试打开文件src/test/resources/junit-platform.properties并粘贴到那里:
junit.jupiter.execution.timeout.default=42 ms
Run Code Online (Sandbox Code Playgroud)
您提到了 JUnit 4@Rule功能,它允许使用带注释的字段在每个测试类的基础上指定超时Timeout。JUnit 5.5 在注释中具有直接等效项@Timeout。这可以以与 JUnit 4 规则相同的方式应用于类级别,在这种情况下,它应用于类及其@Nested类内的所有测试。它还可以应用于单个@Test或生命周期(@BeforeAll、@BeforeEach、@AfterEach或@AfterAll)方法。
根据JUnit 5 用户指南:
该
@Timeout注释允许声明如果测试、测试工厂、测试模板或生命周期方法的执行时间超过给定的持续时间,则该测试、测试工厂、测试模板或生命周期方法应该失败。持续时间的时间单位默认为秒,但可以配置。[...]
要将相同的超时应用于测试类及其所有
@Nested类中的所有测试方法,您可以@Timeout在类级别声明注释。然后,它将应用于该类及其类中的所有测试、测试工厂和测试模板方法,除非被特定方法或类上的注释@Nested覆盖。请注意,在类级别声明的注释不适用于生命周期方法。@Timeout@Nested@Timeout
| 归档时间: |
|
| 查看次数: |
1268 次 |
| 最近记录: |