如何使用Task返回类型测试方法?

时间:2015-05-06 22:27:33

标签: c# unit-testing async-await task

我正在尝试测试其签名格式为

的方法
public async Task<List<int>> MethodToBeTested()

我已经编写了一个单元测试如下

[TestMethod] 
public async Task MethodToBeTestedSuccess()
{
Task<List<int>> results = await MethodToBeTested()
......
}

如果方法的返回类型是一个通用的整数列表,我会执行以下步骤来测试输出

List<int> results = MethodToBeTested();
int numberOfResults = results.Count;
Assert.AreEqual(numberOfResults,2300);

因此,我的问题是:如何测试异步方法,其返回类型包含在任务中,并验证是否已返回2300个结果?

如果我尝试在整数通用列表上尝试的策略,我会得到错误:无法将方法组Count转换为非委托类型int。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

假设单元测试框架是async - 知道(如果你正在进行异步单元测试,希望它是:)),那么你应该能够修复你的编译器错误:

[TestMethod] 
public async Task MethodToBeTestedSuccess()
{
    List<int> results = await MethodToBeTested()
    ......
}

换句话说,根据您显示的签名,如果您await方法调用,结果类型为List<int>,而不是Task<List<int>>,您应该将变量声明为相应地收到结果。