7

特定の状況でブロックすると予想されるメソッドをテストしたいと思います。

TimeoutAttributeとの組み合わせを試しましたExpectedExceptionAttribute

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

残念ながら、ここThreadAbortExceptionで読んでいたのは NUnit 自体に引っかかるように見えるため、これは機能しません。

(NUnit を使用して) タイムアウトを期待する方法はありますか?

4

1 に答える 1

6

このような問題には、おそらくTaskandTask.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ほとんどの単体テストでは、これは問題になりません。

于 2013-11-19T11:09:25.717 に答える