JUnit 5 中多个扩展的顺序

问题描述 投票:0回答:1

如果我在 JUnit 5 中使用多个扩展,顺序是什么?理想情况下,遵守

@ExtendsWith
注释的顺序,但我找不到任何相关文档。

示例:

@ExtendWith({SpringExtension.class, InitH2.class})
public class VmRepositoryIntegrationTest {
  // Test implemenations
}

因此,在这个示例中,我需要 Spring 设置数据库连接,然后才能初始化数据库。

java spring-boot junit5
1个回答
21
投票

摘自 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
延长,完全按照这个顺序

© www.soinside.com 2019 - 2024. All rights reserved.