我如何对无限等待的听众进行单元测试?

时间:2013-07-18 16:29:52

标签: c# .net unit-testing mstest moles

我正在使用MSTest,Vs2010。我有一种情况,其中带有while循环的方法调用AutoResetEvent.WaitOne。我可以从我的Test方法中触发此事件;它将迭代一次,然后再次等待触发此事件。

在这种情况下,我无法断言。我如何对这些方法进行单元测试?

由于

1 个答案:

答案 0 :(得分:3)

我建议在单元测试中使用Task在单独的线程中初始化循环。

public void TestMyLoop()
{

    var myLooper = new Looper();

    Task t = Task.Run(() => myLooper.BeginWorking());  // BeginWorking is an infinite loop, it will never end!

    myLooper.AddAnItemToProcess(new Item());

    Thread.Sleep(5000); // wait 5 seconds, alternatively hook into and `await` some completion event.

    // assert here
    Assert.That(myLooper.processedItems == 1);

 }