如何测试具有 Task return 类型的方法?

How can I test a method with a Task return type?

我正在尝试测试一种签名形式为

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

我写了一个单元测试如下

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

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

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

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

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

在此先感谢您的帮助。

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

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

换句话说,给定你显示的签名,那么如果你await方法调用,结果类型是List<int>,而不是Task<List<int>>,你应该声明变量以相应地接收结果。