我有一个使用@KafkaListener消耗Kafka主题的应用程序,将一些数据保存在Redis上,并将响应发送回其他主题。我应该在上面建立集成测试。因此,我必须在主题1上发送一条消息,并在主题2上等待响应,然后从Redis中读取一些数据。
直接运行应用程序并通过CLI发送一些Kafka消息足以成功验证我想要的内容。当我尝试对JUnit执行相同操作时,我注意到该应用程序在其侦听器可以读取通过测试插入的消息之前就已死亡。使用断点足以实现相同的行为。
我尝试使用Thread.sleep,但是它没有任何行为变化,我也不知道为什么。测试是否使用相同的应用程序线程运行?我还考虑过this.newComponents.get(index)
,但是由于我的应用程序没有该对象的构造函数,因此无法更改它。
如何在测试完成之前至少延长时间以至少调用某种异步方法?