Junit5 之 Timeouts
Contents
@Timeouts 注解允许 定义 test,test factory,test template或lifeCycle method 在给定的时间内没执行晚,测试用例就失败。时间长度默认是秒但可以配置。
与assertTimeoutPreemptively()相反,注解方法的执行在主线程。如果执行超时,主线程会被其他线程中断。这样做是为了保证诸如spring利用对当前线程敏感。例如threadlocal事务管理。
也可以应用在类上的所有方法或者是@Nested方法,在类上定义@Timeout注解。主要注意@Timeout定义在类上不能应用在lifecycle method
定义@Timeout在@TestFactory 方法上检查工厂方法是否在特定时间内返回,但是不能校验在每次独立的Dynamic Test
的执行时间。请使用assertTimeout() 或assertTimeoutPreemptively()。
如果@Timeout在@TestTemplate上,例如@RepeatedTest,@ParameterizedTest每次调用都会校验时间。
不同分类的测试方法,都有默认配置,可以自定义修改。
如果需要更多控制异步执行,可考虑Awaitility库。
为了不影响debug,可以全局关闭timeout