このテストは、NUnitコンソールランナーを使用して実行すると失敗します。私はTestDriven.NETとちょうどそのテストを実行する場合、それは動作しますが、私はTestDriven.NETとスイート全体実行する場合ではない:C#/。NET NUnitを使用したBackgroundWorkerのテスト
[Test]
public void BackgroundWorkerFiresRunWorkerCompleted()
{
var runner = new BackgroundWorker();
ManualResetEvent done = new ManualResetEvent(false);
runner.RunWorkerCompleted += delegate { done.Set(); };
runner.RunWorkerAsync();
bool res = done.WaitOne(TimeSpan.FromSeconds(10));
// This assert fails:
Assert.IsTrue(res, "RunWorkerCompleted was not executed within 10 seconds");
}
を私は問題があると思われるメッセージループを持っていないとは何かを持っているが、私はわかりません。
BackgroundWorkerを使用するための要件は何ですか?
テストを行うための回避策はありますか?
それは動作します。ありがとう! –
DoEvents()は、テスト(または同じテストの前のテスト)がWindowsのフォームまたはコントロールをインスタンス化する場合にのみ必要です。どうして? –
どのWinFormsコントロールでも、ウィンドウメッセージはメッセージポンプを通過する必要があります。DoEvents()を呼び出さないと発生しません。 – Lucero