gpt4 book ai didi

java - 用于测试目的的同步模式干扰器

转载 作者:行者123 更新时间:2023-11-30 07:58:18 25 4
gpt4 key购买 nike

为了对包含干扰器的某些代码进行单元测试,我需要确保在主测试线程继续之前处理发布到干扰器的事件(显然,我没有测试干扰器代码)。

在没有更优雅的解决方案的情况下,我解决了这个问题,如下:

...
ringBuffer.publish(sequence);
while (ringBuffer.getBufferSize() > ringBuffer.remainingCapacity()) {
Thread.yield();
}

但是,我想知道是否有某种方法可以将干扰器设置为“同步模式”(我查看了但找不到任何),或者可以使用“同步模拟干扰器”实现来确保在 onEvent() 处理完所有事件之前,线程不会从 publish() 返回吗?

最佳答案

干扰器没有同步模式。

捏造事实的方法有很多种:

  • 例如在 CountDownLatch 上阻止​​发布商事件处理程序倒计时。
  • 另一种选择是使用相同的线程执行器,例如 jmock 中的这个执行器。 ,让干扰者安排事件处理程序。因此,您可以控制事件处理程序何时处理事件。

但是对我来说,这更像是集成测试而不是单元测试。为什么发布者需要“知道”消费者已经消费了该事件?

关于java - 用于测试目的的同步模式干扰器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32325998/

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