加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 07:55:29 所属栏目:百科 来源:网络整理
导读:我想测试一种我希望在特定情况下阻止的方法. 我尝试了TimeoutAttribute和ExpectedExceptionAttribute的组合: [Test][Timeout(50),ExpectedException(typeof(ThreadAbortException))]public void BlockingCallShouldBlock(){ this.SomeBlockingCall();} 不幸
我想测试一种我希望在特定情况下阻止的方法.

我尝试了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,但对于大多数单元测试,这是一个非问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读