async void
单元测试不能在Visual Studio 2012中运行:
[TestClass]
public class MyTestClass
{
[TestMethod]
public async void InvisibleMyTestMethod()
{
await Task.Delay(1000);
Assert.IsTrue(true);
}
}
如果要进行异步单元测试,则测试方法必须返回Task:
[TestMethod]
public async Task VisibleMyTestMethod()
{
await Task.Delay(1000);
Assert.IsTrue(true);
}
为什么会这样呢?并不是说我绝对需要一种async void
测试方法,我只是很好奇。async void
即使无法运行,Visual Studio 2012在构建测试方法时也不会发出警告或错误。
async void
方法应被视为“解雇” –无法等待它们完成。如果Visual Studio要启动这些测试之一,它将无法等待测试完成(将其标记为成功)或捕获引发的任何异常。
使用async Task
,调用者可以等待执行完成,并捕获运行时引发的所有异常。
见这个答案为更多的讨论async void
VS async Task
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句