gpt4 book ai didi

Spring 集成 : testing poller dependent logic

转载 作者:行者123 更新时间:2023-11-28 20:08:03 26 4
gpt4 key购买 nike

我想知道如何编写 Spring 测试来断言由“SourcePollingChannelAdapter”触发的逻辑链。

我想到了什么:

  • 使用 Thread.sleep() 这对测试来说真的很糟糕
  • 有另一个测试版本的 spring 上下文,我将用直接 channel 替换所有可轮询 channel 。这需要很多工作。

有没有什么通用的方法可以在测试中强制触发轮询器?

最佳答案

通常我们在测试中使用 QueueChannel 并通过其 receive(10000) 方法等待消息。这样,独立于数据源,我们的测试方法线程将被阻塞,直到数据到达。

SourcePollingChannelAdapterTaskScheduler 触发,因此整个流程逻辑在与测试方法不同的线程中完成。我的意思是,您关于更换 channel 的想法无济于事。 Thread.sleep() 可能有值(value),但 QueueChannel.receive(10000) 更可靠,因为我们实际上只等待那 10 秒。

另一种阻止测试用例的方法来自标准 CountDownLatch,您可以在流程中的某处countDown() 并在测试方法中等待它。

还有一些其他的测试方法:在迭代之间有一些 sleep 周期较短的循环,并检查一些条件以退出并验证。最后,这在轮询器和数据库的情况下可能很有用。因此,我们将在该循环中执行 SELECT 直到达到所需状态。

您可以在 Reference Manual 中找到一些附加信息.

关于 Spring 集成 : testing poller dependent logic,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47833131/

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