create async unit test抛出聚合异常

时间:2015-02-10 13:35:14

标签: c# async-await c#-5.0

我必须更改什么才能使此异步单元正确运行?

目前我得到'System.AggregateException'

我已经读过,我不应该用asnyc标记一个测试方法,并在SUT前面加上'await',因为断言会失败,因为结果还没有返回。

[TestMethod]
public void CreateAsyncViewModel()
{
    // other stuff
    var result =  vmMapper.CreateViewModel(mock1,mock2);
    result.Wait();

    var viewModel = result.Result;

    Assert.AreEqual(viewModel.Data.Count(), 1);

}

1 个答案:

答案 0 :(得分:14)

您应该使用asynchronous unit test methods,正如我在MSDN文章中描述的那样:

[TestMethod]
public async Task CreateAsyncViewModel()
{
  // other stuff
  var result =  vmMapper.CreateViewModel(mock1, mock2);

  var viewModel = await result;

  Assert.AreEqual(viewModel.Data.Count(), 1);
}

await将避免AggregateException包装,让您更轻松地确定单元测试失败的原因。