Этот тест не выполняется, когда он запускается с помощью бегуна консоли NUnit. Это работает, если я бегу только что тест с TestDriven.NET, но если я запускаю весь набор с TestDriven.NET:C# /. NET: Тестирование BackgroundWorker с помощью NUnit
[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