spring - 在 SpringExtension 之前执行扩展
问题描述
我正在尝试在我的应用程序中实现集成测试并拥有这样的测试类:
@ExtendWith(value={MyDockerExtension.class})
@ExtendWith(value={SpringExtension.class})
@WebAppConfiguration
@ContextConfiguration(classes={...})
@TestInstance(TestInstance.LifeCycle.PER_CLASS)
public class TestClass{ ... }
在整个 SpringExtension 开始工作并使用 Configurationc 类生成整个 Context 之前,有什么方法可以让 MyDockerExtension 执行一些代码?
我听说我们声明扩展的顺序是关键,但遗憾的是,实现的 MyDockerExtensionBeforeAllCallback, AfterAllCallback
在测试方法之前和加载整个上下文之后执行。在这种情况下,使用 docker 启动容器为时已晚,因为由于加载了整个上下文,我的应用程序已经尝试连接到容器。
解决方案
起初我对修复的订单持怀疑态度,但你是对的:
以声明方式注册的扩展
@ExtendWith
将按照它们在源代码中声明的顺序执行。
关于MyDockerExtension
,您可能需要查看TestInstancePostProcessor
之前调用的扩展点@BeforeAll
。SpringExtension
实现它,我猜它在那里设置应用程序上下文。如果你也实现了它,你应该能够在它之前采取行动。
推荐阅读
- node.js - 在 express.js 控制器中等待会影响性能吗?
- python - Openpyxl:遍历一列的所有行
- python - python找到数字之间的差距
- kubernetes - Prometheus-operator 无法获取 pod CPU/内存使用情况
- java - 我不知道该怎么做才能使我的“数字 2”不为零
- python - 错误“不能将序列乘以‘float’类型的非整数”试图绘制 NACA 翼型
- r - 在 python 中为 R 找到的输入函数的等价物是什么?
- google-apps-script - Web 应用程序要求用户登录,即使它已被部署为“任何人,甚至匿名”使用
- sorting - GraphQL:基于用户属性的排序查询
- php - 如何在 PHP 5.6 上安装 Xdebug