在SpringExtension之前执行扩展

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

我正在尝试在我的应用程序中实现集成测试,并拥有类似的测试类:

@ExtendWith(value={MyDockerExtension.class})
@ExtendWith(value={SpringExtension.class})
@WebAppConfiguration
@ContextConfiguration(classes={...})
@TestInstance(TestInstance.LifeCycle.PER_CLASS)
public class TestClass{ ... }

在整个SpringExtension开始工作并使用Configurationc类生成整个Context之前,有没有办法让MyDockerExtension执行一些代码?

我听说我们声明扩展的顺序是关键,但遗憾的是,实现BeforeAllCallback, AfterAllCallback的MyDockerExtension在测试方法之前和加载整个上下文之后执行。在那种情况下,使用docker启动容器要迟到,因为加载了整个上下文,我的应用程序已经尝试连接到容器。

spring docker integration-testing junit5 junit5-extension-model
1个回答
1
投票

起初我对订单被修复持怀疑态度,但you're correct

通过@ExtendWith以声明方式注册的扩展将按照它们在源代码中声明的顺序执行。

关于MyDockerExtension,你可能想看一下在TestInstancePostProcessor之前调用的扩展点@BeforeAllSpringExtension implements it,我想它就是设置应用程序上下文的地方。如果你也实现它,你应该能够在它之前采取行动。

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