gpt4 book ai didi

spring - 在 SpringExtension 之前执行扩展

转载 作者:行者123 更新时间:2023-12-02 19:06:12 24 4
gpt4 key购买 nike

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

@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 启动容器为时已晚,因为整个上下文已加载,我的应用程序已经尝试连接到容器。

最佳答案

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

Extensions registered declaratively via @ExtendWith will be executed in the order in which they are declared in the source code.

关于 MyDockerExtension,您可能需要查看扩展点 TestInstancePostProcessor ,在 @BeforeAll 之前调用。 SpringExtension implements it我想它就是在那里设置应用程序上下文的。如果您也实现它,您应该能够在它实现之前采取行动。

关于spring - 在 SpringExtension 之前执行扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51554973/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com