c# – NUnit可以期待超时吗?

我想测试一种我希望在特定情况下阻止的方法.

我尝试了TimeoutAttribute和ExpectedExceptionAttribute的组合:

[Test]
[Timeout(50),ExpectedException(typeof(ThreadAbortException))]
public void BlockingCallShouldBlock()
{
    this.someBlockingCall();
}

不幸的是,这不起作用,我读到的关于here的ThreadAbortException好像被NUnit本身抓住了.

有没有办法期待超时(使用NUnit)?

解决方法

对于这样的问题,我可能会使用 TaskTask.Wait(int)Task.Wait(TimeSpan).例如:
[Test]
public void BlockingCallShouldBlock()
{
    var task = Task.Run(() => SomeBlockingCall());
    var completedInTime = task.Wait(50); // Also an overload available for TimeSpan
    Expect(completedInTime,Is.False);
}

但是请注意,这将在后台线程上调用SomeBlockingCall,但对于大多数单元测试,这是一个非问题.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...