Le cadre de test unitaire Silverlight dispose d'un attribut [Asynchronous] (AsynchronousAttribute) qui fait que les tests ne se terminent que lorsque la fonction EnqueueTestComplete() est appelée. Cela permet d'écrire simplement des tests qui doivent attendre qu'un événement se produise avant de se terminer. J'essaie maintenant de choisir un framework de test unitaire général parmi ceux qui semblent être les plus populaires - VSUTF, NUnit, xUnit.NET, MbUnit - et je me demandais comment vous feriez des tests asynchrones en utilisant ces frameworks ?
Je suppose que je peux développer un code personnalisé qui fera Monitor.Wait ou ResetEventWaitOne et l'appellera à la fin de la méthode de test, puis fera un Pulse/Set quand le test sera terminé, mais je cherchais s'il y avait une solution commune/intégrée existante.
Voici un exemple de la façon dont cela se passe dans SUT (d'après 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();
});
}
}