2012-01-01 7 views
6

Silverlight Unit Test Frameworkには、[非同期]属性(AsynchronousAttribute)があり、EnqueueTestComplete()が呼び出されたときにのみテストが終了します。これにより、終了する前にイベントが発生するのを待つ必要があるテストを簡単に記述することができます。今では、VSUTF、NUnit、xUnit.NET、MbUnitといった最も人気のある選択肢の中から好きな汎用ユニットテストフレームワークを選択しようとしています。これらのフレームワークを使って非同期テストをどうやって行うのでしょうか?VSUTF、NUnit、xUnit.NET、MbUnitとSUTFの非同期テスト?

私は、Monitor.WaitまたはResetEventWaitOneを実行するカスタムコードをいくつか用意してテストメソッドの最後に呼び出し、テストが終了したらパルス/セットを実行しますが、既存の共通/組み込みソリューションがあります。

これは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署名と完全なテスト非同期メソッドが完了したテストをサポートしています。

関連する問題