Come testare metodi asincroni usando nunit?come testare metodi asincroni usando nunit
risposta
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
}
}
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.
StackOverflow non dovrebbe consentire voti bassi senza una spiegazione. Per favore, spiegati quando down, in modo che ci aiuti tutti a imparare. – Daryn
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. –
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
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