Spring 集成窃听直接 MessageChannel 用于测试

Spring Integration wiretap direct MessageChannel for Testing

我想对两个 Spring 启动应用程序进行集成测试,它们也使用 Spring 集成流程。为了测试我的应用程序,我想检查通过 myMessageChannel 路由的消息。它在其中一个应用程序的 XML 流程中定义。

如何窃听我的直接消息通道并将消息重定向到 PollableChannel,以便我可以一条一条地阅读它们? None 我在网上找到的方法对我有用。

@RunWith(SpringRunner.class)
@SpringBootTest(classes = {App1.class, App2.class}, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
@TestPropertySource("classpath:integration.properties")
public class MyWireTapTest {

    @Autowired
    MessageChannel myMessageChannel;

    @Test
    public void test() {


        // This is basically what I want to do
        // But it does not work, since it is a direct channel
        myMessageChannel.recieve();

    }
}

将其自动连接为 AbstractMessageChannel 并使用

myMessageChannel.addInterceptor(new WireTap(tapChannel));

我写了一个关于如何执行此操作的示例演示(通过 XML 配置):

https://github.com/hakanozbay/spring-integration-testing