1

My ViewModel クラスのいくつかのコマンドの単体テストを作成したいと考えています。ICommandの実行をテストしたい。

私のICommand.Execute()メソッドは非同期メソッドを実行します。

このコマンドのテスト ケースを作成するにはどうすればよいですか?

注: Visual Studio 2012 Update 2 の CTP2 で提供される Windows Phone Unit Test フレームワークを使用していますhttp://blogs.msdn.com/b/visualstudioalm/archive/2013/01/31/windows-phone-unit-tests -in-visual-studio-2012-update-2.aspx

4

3 に答える 3

2

async Taskメソッドのテストははるかに簡単です。つまり、実際に単体テストされるメソッドだけをasync void Execute実装してください。awaitasync Task

async void組み込みの MSTest ユニット テスト フレームワークは、テストメソッドをサポートしていません。async void現在、NUnit はメソッドをサポートする唯一の単体テスト フレームワークです。

本当にメソッドをテストしasync voidたいが、NUnit を使用したくない場合は、Stephen ToubAsyncPumpまたはmyAsyncContext (NuGet で入手可能) を使用して、単体テストごとに独自のコンテキストを作成できます。この場合、テストは次のようになります。

[TestMethod]
public void TestMyAsyncVoidMethod()
{
  ICommand myCommand = ...;

  AsyncContext.Run(() =>
  {
    myCommand.Execute();
    Assert.IsTrue(command-is-in-progress);
  });

  Assert.IsTrue(command-completed);
}
于 2013-02-13T15:08:52.130 に答える
0

テストメソッドの署名を次のように変更する必要があります

[TestMethod] public async Task TestMyAsyncVoidMethod() {....

コマンド実行メソッドを待つことができるようにします。

于 2014-10-01T14:08:13.077 に答える
0

[Asynchronous]メソッドに属性のタグを付けてから呼び出すと思いますawait ICommand.Execute()

非同期の Windows Phone メソッド テストのサンプルについては、この投稿を確認してください。

于 2013-02-13T11:37:23.230 に答える