スリープするモックストリームを使用せずに(割り込みに反応するため)、IOパフォーマンスが非常に悪い場合に、アプリケーションコードの動作をテストするにはどうすればよいですか?
たとえば、ConcurrentWrapper
ファイルIO用のスレッドのプールがあるユーティリティをテストしたいと思います。各操作をタイムアウト付きのwithExecutorService
に送信します。タイムアウトの前に終了する呼び出しだけでなく、 (リークを回避するために)内部のスレッドが何らかの形で終了したこともinvokeAll()
確認したいと思います。ConcurrentWrapper
ExecutorService
どういうわけか、内側のスレッドで遅いIOをシミュレートする必要がありますが、(実際のIOのように)割り込みを無視する方法で。
少し明確にするInterruptedException
:「眠って飲み込む」や「眠って、捕まえInterruptedException
て眠りに戻る」のような答えは受け入れられません。コードが割り込みをどのように処理するかをテストしたいのですが、そのようなインストルメンテーションは、割り込み自体を処理することで目的を達成できません。