如果我在 JUnit 5 中使用多个扩展,顺序是什么?理想情况下,遵守
@ExtendsWith
注释的顺序,但我找不到任何相关文档。
示例:
@ExtendWith({SpringExtension.class, InitH2.class})
public class VmRepositoryIntegrationTest {
// Test implemenations
}
因此,在这个示例中,我需要 Spring 设置数据库连接,然后才能初始化数据库。
摘自 JUnit 5 用户指南§5.2.1:
...
多个扩展可以一起注册,如下所示:
@ExtendWith({ DatabaseExtension.class, WebServerExtension.class }) class MyFirstTests { // ... }
作为替代方案,可以像这样单独注册多个扩展:
@ExtendWith(DatabaseExtension.class) @ExtendWith(WebServerExtension.class) class MySecondTests { // ... }
延期注册订单
通过
在类级别、方法级别或参数级别以声明方式注册的扩展将按照它们在源代码中声明的顺序执行。例如,@ExtendWith
和MyFirstTests
中的测试执行将由MySecondTests
和DatabaseExtension
延长,完全按照这个顺序。WebServerExtension