7 votes

Tests asynchrones dans VSUTF, NUnit, xUnit.NET, MbUnit vs. SUTF ?

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();
            });
    }
}

1voto

grahamrhay Points 524

Christopher Bennage a une approche intéressante, inspirée par Caliburn Micro :

http://devlicio.us/blogs/christopher_bennage/archive/2011/01/17/improving-asynchronous-tests-for-silverlight.aspx

1voto

Filip Skakun Points 20765

Visual Studio prend désormais en charge les tests qui ont l'attribut async Task et les tests se terminent lorsque la méthode asynchrone s'achève.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X