Асинхронные тесты в VSUTF, NUnit, xUnit.NET, MbUnit и SUTF? - PullRequest
7 голосов
/ 01 января 2012

Платформа модульных тестов Silverlight имеет атрибут [Asynchronous] (AsynchronousAttribute), который заставляет тесты заканчиваться только при вызове EnqueueTestComplete ().Это позволяет простым способом писать тесты, которые должны ждать события, прежде чем они завершатся.Сейчас я пытаюсь выбрать любимую инфраструктуру модульного тестирования общего назначения из тех, которые кажутся наиболее популярными - VSUTF, NUnit, xUnit.NET, MbUnit, и мне было интересно - как бы вы провели асинхронное тестирование с использованием этих платформ?

Полагаю, я могу развернуть некоторый пользовательский код, который будет выполнять Monitor.Wait или ResetEventWaitOne и вызывать его в конце метода теста, а затем выполнить Pulse / Set после завершения теста, но я былпоиск существующего общего / встроенного решения.

Это пример того, как это делается в SUT (от 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();
            });
    }
}

Ответы [ 2 ]

1 голос
/ 07 июня 2013

Visual Studio теперь поддерживает тесты с подписью async Task и тесты завершаются после завершения асинхронного метода.

1 голос
/ 06 января 2012

Кристофер Беннаж имеет интересный подход к этому, вдохновленный Caliburn Micro:

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

...