gpt4 book ai didi

java - 使用带有多线程的camel框架进行组件测试

转载 作者:太空宇宙 更新时间:2023-11-04 15:11:21 28 4
gpt4 key购买 nike

我正在使用 Camel 测试套件测试组件。

我使用

将数据发送到端点
template.sendBodyAndHeaders(theEndpoint, data, headers);

在这个语句之后,我使用断言模拟端点

assertMockEndpointsSatisfied();

但问题是端点需要一些时间(基于输入)进行处理,因此我的断言条件失败,因为模拟队列尚未收到数据。

为了解决这个问题,我尝试使用

1. Thread.sleep(1000L); 

但正如我所说,处理时间会随着输入而变化,有时会失败。我无法增加时间,因为在使用较小的输入进行测试时可能会出现性能问题。也尝试过,

2. synchronized (this) {
this.wait();
assertMockEndpointsSatisfied();
}
synchronized (this) {
template.sendBodyAndHeaders(theEndpoint, data, headers);
template.notify();
}

但这是一个僵局。我知道代码是错误的并且永远不会工作。但多线程对我来说是新的,我读过有关 wait/notify 的内容,但仍然无法找到正确的解决方案。

知道如何使此等待/通知工作或解决此问题的任何其他解决方案,该解决方案仅在处理完成后才实际断言而不是基于硬编码超时值吗?

最佳答案

使用 NotifyBuilder 怎么样? ,您可以让构建器超时为 5 秒,并且您的测试不必等待 5 秒。

关于java - 使用带有多线程的camel框架进行组件测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21300927/

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