1

我被指派对一个 Metro 应用程序进行单元测试,该应用程序在 c# 中有很多异步函数 (IAsyncOperation)。如何对 IAsyncOperation 函数进行单元测试,或者我们可以使用带有 IAsyncOperation 函数的 Task 进行测试。如果可以,请举个例子。因为 IAsyncOperation 仅适用于 winRT 和普通 c# 中的 Task 以实现并行

4

2 回答 2

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

于 2013-02-02T06:04:25.770 回答
1

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

这个 StackOverflow 问题可能会有所帮助:Task<> 和 IAsyncOperation<> 之间有什么区别

于 2013-02-02T00:26:19.767 回答