【发布时间】:2015-04-10 13:33:55
【问题描述】:
要使这个异步单元正确运行,我需要进行哪些更改?
目前我收到了'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);
}
【问题讨论】:
-
我认为您需要查看聚合异常以了解根本原因是什么。
-
"I have read that I should not mark a test method with asnyc and prefix the SUT with 'await' because then the assertion will fail as the result is not yet returned"- 你在哪里读到的?等待任务将做到这一点......等待它。在任务完成之前,断言不会执行。至于例外情况,详情如何?哪一行抛出异常?聚合的内部异常是什么? “我遇到异常”不足以诊断问题。 -
@David 但是我的测试同步运行正确吗?因为它等待......
-
@Pascal:如果测试运行者也在等待测试,是的。但是你并没有真正控制测试运行器,所以这不值得担心。 (另外,这与当前的实现有何不同?)关键是异步应该是“一直异步”,这意味着消费代码也应该是异步的,并且应该由应用程序主机来确定同步来电。
标签: c# async-await c#-5.0