2012-01-01 7 views
6

Il framework di test unità Silverlight ha un attributo [Asincrono] (Asincrono) che provoca la fine dei test solo quando viene richiamato EnqueueTestComplete(). Ciò consente un modo semplice per scrivere test che devono attendere che si verifichi un evento prima che finiscano. Ora sto cercando di scegliere un framework di test per unità generiche preferito tra quelli che sembrano essere le scelte più popolari - VSUTF, NUnit, xUnit.NET, MbUnit e io ci stavamo chiedendo - come si farebbero i test asincroni usando questi framework?Test asincroni in VSUTF, NUnit, xUnit.NET, MbUnit vs SUTF?

Suppongo di poter distribuire un codice personalizzato che eseguirà Monitor.Attendi o ResetEventWaitOne e chiamarlo alla fine del metodo di test, quindi eseguire Pulse/Set quando il test è terminato, ma stavo cercando se esiste una soluzione comune/built-in esistente.

Questo è un esempio di come viene eseguito in SUT (da http://smartypantscoding.com/a-cheat-sheet-for-unit-testing-silverlight-apps-on-windows-phone-7).

[TestClass] 
public class AsyncTests : SilverlightTest 
{ 
    [Asynchronous] 
    [TestMethod] 
    public void AsyncAppendStringTest() 
    { 
     var appendStrings = new List<string>() { "hello", "there" }; 

     StringJoiner.AsyncAppendStringsWithDashes(appendStrings, (returnString) => 
      { 
       Assert.IsTrue(string.Compare(returnString, "hello-there") == 0); 
       EnqueueTestComplete(); 
      }); 
    } 
} 

risposta

1

Visual Studio supporta ora le prove che hanno la firma async Task ei test completo quando il metodo asincrono completa.