gpt4 book ai didi

spring - 单元测试 Spring ApplicationEvents - 事件正在发布但监听器没有触发?

转载 作者:行者123 更新时间:2023-12-04 12:49:14 28 4
gpt4 key购买 nike

我正在尝试对我在 Spring 中创建的自定义事件进行单元测试,并且遇到了一个有趣的问题。如果我创建一个 StaticApplicationContext并手动注册和连接bean,我可以触发事件并查看程序通过发布者(实现ApplicationEventPublisherAware)到监听器(实现ApplicationListener<?>)。

然而,当我尝试使用 SpringJunit4ClassRunner 创建 JUnit 测试来创建上下文时和 @ContextConfiguration一切正常,除了 ApplicationEvents 没有出现在监听器中(我已经确认它们正在发布)。

是否有其他方法可以创建上下文以便 ApplicationEvents 正常工作?我在网上没有找到太多关于单元测试 Spring 事件框架的信息。

最佳答案

我只是将我的应用程序作为 SpringBootTest 运行,应用程序事件运行良好:

@TestComponent
public class EventTestListener {

@EventListener
public void handle(MyCustomEvent event) {
// nothing to do, just spy the method...
}
}

@RunWith(SpringRunner.class)
@SpringBootTest
public class MyEventTest {

@SpyBean
private EventTestListener testEventListener;

@Test
public void testMyEventFires() {
// do something that fires the event..

verify(testEventListener).handle(any(MyCustomEvent.class));
}
}

使用 @Captor/ArgumentCaptor 来验证您的事件内容。

关于spring - 单元测试 Spring ApplicationEvents - 事件正在发布但监听器没有触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7905639/

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