2013-10-16 4 views
7

특정 상황에서 차단할 것으로 예상되는 방법을 테스트하고 싶습니다. 대한 here NUnit를 그 자체로 잡힐 것으로 보인다NUnit에서 시간 초과를 예상 할 수 있습니까?

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

불행하게도 이것이 내가 읽고 있던 ThreadAbortException대로 작동하지 않습니다

은 내가 TimeoutAttributeExpectedExceptionAttribute의 조합을 시도했다.

타임 아웃 (NUnit 포함)이 예상되는 방법이 있습니까?

답변

5

이와 같은 문제는 아마도 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를 호출하지만, 단위 테스트의 대부분이이 아닌 문제입니다.

관련 문제