在c#中使用Task测试IAsyncOperation

时间:2013-02-02 00:09:32

标签: c# windows-runtime

我已经接受了对在c#中拥有大量异步函数(IAsyncOperation)的metro应用程序进行单元测试。如何对IAsyncOperation函数进行单元测试,或者我们可以使用Task和IAsyncOperation函数进行测试。如果是,请举个例子。因为IAsyncOperation仅适用于winRT,而正常c#中的任务适用于parallalism

2 个答案:

答案 0 :(得分:3)

您可以直接测试返回IAsyncOperation<T>的方法。首先根据UnitTestLibrary (Windows Store apps)项目模板创建一个新项目。

假设您要测试以下方法:

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

您可以按如下方式从测试类中调用它:

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

请确保在测试方法签名中使用async Task代替void

答案 1 :(得分:1)

您可以使用IAsyncOperation<T>.StartAsTask()方法生成与异步操作相对应的Task<T>

此StackOverflow问题可能会有所帮助:What is the difference between Task<> and IAsyncOperation<>