Асинхронные тесты в VSUTF, NUnit, xUnit.NET, MbUnit против SUTF?

Silverlight Unit Test Framework имеет атрибут [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() { "hello", "there" };

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

7
задан Filip Skakun 1 January 2012 в 01:21
поделиться