2012-01-01 3 views
6

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

Я предполагаю, что могу выкачать какой-то пользовательский код, который будет делать 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(); 
      }); 
    } 
} 

ответ

1

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

0

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

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

+0

Это все еще решение на основе Silverlight Unit Test, хотя из того, что я мог видеть. Что относительно других, не-Silverlight каркасов? –

Смежные вопросы