2013-02-02 35 views
1

我已經被授權在c#中獲得很多異步函數(IAsyncOperation)的metro應用程序的單元測試。如何單元測試IAsyncOperation函數,或者我們可以使用Task with IAsyncOperation函數進行測試。如果是,請給我一個例子。因爲IAsyncOperation只能在winRT和任務中正常運行c#以平行運行使用c#中的任務測試IAsyncOperation使用任務#

回答

2

您可以測試直接返回IAsyncOperation<T>方法。首先根據UnitTestLibrary (Windows Store apps)項目模板創建一個新項目。

假設你要測試的方法如下:

[TestClass] 
public class UnitTest1 
{ 
    [TestMethod] 
    public async Task TestMethod1() 
    { 
     var viewModel = new ViewModel(); 
     Assert.AreEqual("result", await viewModel.GetString()); 
    } 
} 

只要確保你在測試中使用async Task代替void

public class ViewModel 
{ 
    public IAsyncOperation<string> GetString() 
    { 
     // 
    } 
} 

您可以從測試類如下叫它方法簽名。

+0

感謝Damir,它可以工作,但它不像其他正常的同步測試那樣在測試資源管理器中顯示通過或失敗的測試結果。 – user1920851

+0

@ user1920851這很奇怪。它對我來說工作得很好。每次測試都發生在你身上嗎?嘗試創建一個非常簡單的異步測試來試用它。 –