ネットワーク伝送に依存するいくつかのコードをテストしたいと思います。コードは要求を行い、コールバックを提供します。要求が完了すると、コールバックが起動されます。私はネットワークの送信を模擬したいと思って、いくつかのレイテンシーをシミュレートするためにThread.sleep
を使用してください...もちろん、それは全体のテストを一時停止させるでしょう。JUnitでの非同期コードのテスト
これまでは、新しいスレッドを作成していて、コールバックが開始される前にテストが終了するのをテスト中にCountDownLatch
を使用して終了しました。私のモックネットワークオブジェクトは、新しいスレッドを作成し、そのスレッドでスリープしてから、コールバックを起動します。実際にはうまくいっていますが、問題はコールバックのアサーションエラーが元のjunitスレッドに報告されないということです。代わりに、コンソール上で例外テキストを取得しています。
は、私は願っていますあります、次のいずれか
- パイプへの道
assertEquals
メインJUnitの出力コレクタに生成されたスレッドからの出力、または - のJUnitでスレッドコードをテストするための全く異なる、より良い方法、または
- シングルスレッドで任意のアイデアについて
感謝を非同期コードをシミュレートするために、いくつかの方法!
なぜQUnitをチェックアウトしません:http://docs.jquery.com/QUnit –