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