为了对包含破坏程序的一些代码进行单元测试,我需要确保在主测试线程继续之前处理发布到破坏程序的事件(显然,我没有测试破坏程序代码)。
在没有更优雅的解决方案的情况下,我克服了以下问题:
...
ringBuffer.publish(sequence);
while (ringBuffer.getBufferSize() > ringBuffer.remainingCapacity()) {
Thread.yield();
}
但是,我想知道是否有某种方法可以将干扰器设置为“同步模式”(我看起来却找不到),或者可以使用的“同步模拟干扰器”实现可以确保在publish()
处理所有事件之前,线程不会从onEvent()
返回?
答案 0 :(得分:1)
破坏者没有同步模式。
有多种方法可以捏造一个:
然而,对我来说,感觉更像是集成测试而不是单元测试。为什么发布者需要“知道”消费者已经消费了该事件?