2010-03-12 4 views
5

nunit을 사용하여 비동기 메서드를 테스트하는 방법은 무엇입니까?nunit을 사용하여 비동기 메서드를 테스트하는 방법

+3

어떤 문제가 있습니까? 당신은 그들을 테스트합니다. 그들이하는 일을 확인하십시오. 나는 당신이 무엇을 기다릴 지 상관없이 말입니다. 그것은 당신이 그것을 알릴 수 있는지를 보는 문제 일 뿐이므로 투표 할 필요가 없습니다. 가능할 수도, 가능하지 않을 수도 있습니다. –

+1

[ "다른 프레임 워크로 NUnit으로 비동기 메소드를 테스트하려면 어떻게해야합니까?"] (http://stackoverflow.com/questions/12191831/how-do-i-test-an-async-method- 결국 -와 - nunit - 결국 - 다른 - 프레임 워크) – chwarr

+0

연구 노력을 보여주는 7 단어 질문에 대한 5 upvotes? _ [좋은 질문을하는 방법은 무엇입니까?] (http://stackoverflow.com/help/how-to-ask) _. 나는 질투한다;) – MickyD

답변

2

.NET의 버전 5 C# 컴파일러를 사용하는 경우 새 async를 사용하고 키워드를 기다릴 수 있습니다. 링크를 첨부하십시오 : http://simoneb.github.io/blog/2013/01/19/async-support-in-nunit/

스레드 동기화를 사용하여 익명의 람다 함수로 클로저를 사용할 수있는 경우.

예)

[TestFixture] 
class SomeTests 
{ 
    [Test] 
    public void AsyncTest() 
    { 
     var autoEvent = new AutoResetEvent(false); // initialize to false 

     var Some = new Some(); 
     Some.AsyncFunction(e => 
     { 
      Assert.True(e.Result); 
      autoEvent.Set(); // event set 
     }); 
     autoEvent.WaitOne(); // wait until event set 
    } 

} 
0

당신은 NUnits Delayed Constraint

[TestFixture] 
class SomeTests 
{ 
    [Test] 
    public void AsyncTest() 
    { 
     var result = false; 
     var Some = new Some(); 
     Some.AsyncFunction(e => 
     { 
      result = e.Result; 
     }); 

     Assert.That(() => result, Is.True.After(1).Minutes.PollEvery(500).MilliSeconds); 
    } 

} 

이 예는 NUnit과 3.6하지만 이전 버전도 제약을 지연 지원을 사용하지만 구문이 다른 그대로를 조회 할 수있다.

+0

StackOverflow는 설명없이 투표를 허용해서는 안된다. 우리가 모두 배울 수 있도록 투표를 할 때 자신을 설명하십시오. – Daryn

관련 문제