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

前端之家收集整理的这篇文章主要介绍了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,但对于大多数单元测试,这是一个非问题.

猜你在找的C#相关文章