c# - 如何对无限等待的监听器进行单元测试?

标签 c# .net unit-testing mstest moles

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

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

谢谢

最佳答案

我建议在单元测试中使用 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);

 }

关于c# - 如何对无限等待的监听器进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17729118/

相关文章:

c# - 使用 WMI 识别哪个设备导致了 Win32_DeviceChangeEvent

.net - 如何将全局异常处理添加到加载项dll?

swift - 所有 ViewController View 在单元测试中都是 Nil?

react-native - React Native Jest - 如何使用多个钩子(Hook)测试功能组件?无法 stub AccessibilityInfo 模块

c# - 如何解码 RTP 数据包并将其保存为 .wav 文件

c# - 从文件中解析并执行Sql语句

c# - .netcore 2.2 Httpcontext 没有 SignInAsync

c# - 使用 Azure Function v2 自定义 Application Insight TelemetryInitializer

java - 测试从标准输入和输出读取到标准输出的方法

c# - 使用 Microsoft.ML 和 DetectIidSpike 了解尖峰