【发布时间】:2020-05-23 23:15:17
【问题描述】:
我正在尝试进行集成测试,其中包括 ApplicationRunner 的执行。
我用的是@SpringBootTest,在上下文初始化的时候,ApplicationRunner自动启动,还可以。
我想要实现的是在 ApplicationRunner 中注入一个 Mock 并在 ApplicationRunner 执行之前配置该模拟。
如果我在测试中配置mock是不行的,因为到执行测试的时候,Spring上下文已经被初始化并且ApplicationRunner已经被执行了。
有没有办法配置模拟在 Spring 上下文已初始化,之前 ApplicationRunner 被执行?
【问题讨论】:
-
能否请您添加有关 ApplicationRunner 实施和测试的来源
-
这个问题比较概念化,具体实现应该无关...
-
我想您正在使用 springBootTests 而不配置您要测试的特定类。所以 spring 在上下文中启动所有 bean,包括你想要模拟的依赖项。为避免这种情况,您必须仅将要测试的 bean 和所有依赖项指定为 mockBean。但是,没有看到来源是不可能确认的。
-
是的!我想模拟一个依赖项,并在执行 ApplicationRunner 之前配置该模拟。我无法实现这一点,因为 ApplicationRunner 是在流控制到达 Test 类之前执行的。
-
@Mr.Eddart 其实我还是没完全理解你。但是,我添加了我暗示的答案。因此,您可以查看它是否满足您的需求,或者我们如何改进它以满足您的需求。谢谢。
标签: java spring spring-boot junit4 junit5