基本的に平均を行うscalaアクターの実装があります。合計とカウントを維持するエントリをプッシュし、平均を計算します。何が起こっているのかというと、テスト中にこれをタイトループで実行すると、エントリを見逃してしまい、それが最後のエントリだと思います。アクターは次のようになります。
val actor = new Actor { def act = react {
case v: Long => addEntry(v); act
case _ => ()
}}.start()
編集: addEntry の実装は次のとおりです。
private def addEntry(v: Long) {
total = total + v
count = count + 1
avg = total / count
}
追加は基本的にactor ! 10
などです
テストで stop を呼び出した後、キューが処理されることを確認するために約 200 ミリ秒待ちます。(または、それが私がやっていることだと思います、これが問題の場所ですか?)
Edit2:基本的に、これらの値をタイトなループで設定し、すぐに終了を呼び出していたため、最後のエントリまたはエントリが処理されていないか、削除されていたと思います。ループの終わりの間に小さなスリープを入れました (実際には、これは CountDownLatch.await と actor.stop であり、テストを失敗させることはできません。