此测试在使用 NUnit 控制台运行程序运行时失败。如果我只用 TestDriven.NET 运行该测试,它就可以工作,但如果我用 TestDriven.NET 运行整个套件,它就不行:
[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 有什么要求?
是否有解决方法可以使测试正常工作?