ディスラプターを含む一部のコードを単体テストするには、メインのテスト スレッドが続行される前に、ディスラプターに発行されたイベントが処理されるようにする必要があります (明らかに、ディスラプター コードをテストしていません)。
より洗練された解決策がないため、次のように問題を解決しました。
...
ringBuffer.publish(sequence);
while (ringBuffer.getBufferSize() > ringBuffer.remainingCapacity()) {
Thread.yield();
}
ただし、ディスラプターを「同期モード」に設定する方法があるかどうか(調べましたが見つかりませんでした)、または使用可能な「同期モックディスラプター」実装で、スレッドがpublish()
によってすべてのイベントが処理される前onEvent()
から戻る