2010-03-12 17 views
5

Come testare metodi asincroni usando nunit?come testare metodi asincroni usando nunit

+3

Che problema stai avendo? Li hai appena testati; e controlla la cosa che stanno facendo. Voglio dire, non importa cosa avrai bisogno di aspettare. È solo questione di vedere se riesci a farti avvertire, quindi non hai bisogno di sondare. Può o potrebbe non essere possibile. –

+1

Vicino al duplicato di ["Come posso testare un metodo asincrono con NUnit, eventualmente con un altro framework?"] (Http://stackoverflow.com/questions/12191831/how-do-i-test-an-async-method- con-nunit-eventualmente-con-un-altro-quadro) – chwarr

+0

5 upvotes per una domanda di 7 parole che non mostra alcuno sforzo di ricerca? _ [Come faccio a fare una buona domanda?] (Http://stackoverflow.com/help/how-to-ask) _. Sono geloso;) – MickyD

risposta

2

Se si dispone della versione 5 di .NET del compilatore C#, è possibile utilizzare nuove asincrone e attendere le parole chiave. allegare il collegamento: http://simoneb.github.io/blog/2013/01/19/async-support-in-nunit/

Se è possibile utilizzare la chiusura con la funzione lambda anonima, utilizzando la sincronizzazione dei thread.

ad esempio)

[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

Si potrebbe utilizzare 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); 
    } 

} 

Questo esempio è per NUnit 3.6, ma le versioni precedenti di supporto anche ritardato Constraint, ma occhiata in su come la sintassi è diversa.

+0

StackOverflow non dovrebbe consentire voti bassi senza una spiegazione. Per favore, spiegati quando down, in modo che ci aiuti tutti a imparare. – Daryn

Problemi correlati