如何使用MSTest测试异步代码

Kev*_*ore 77 .net unit-testing

我正在写一些超级简单的异步代码.只是将文件保存在线程外.

我想使用Microsoft Visual Studio Team System 2008中的MSTest单元测试框架来测试此代码.

我该怎么做呢?

我想简单地阻止测试方法,直到方法返回.我可以想象一些方法来做到这一点,但我很震惊,没有任何最佳实践或帮助类围绕这一点.

我看到很多 Silverlight,但没有通用.

Wim*_*nen 138

Visual Studio 2012(以前称为"Visual Studio 11")引入了对异步测试的支持.它看起来像这样:

[TestMethod]
public async Task FooTest()
{
   var result = await SomeAsyncOperation();
   Assert.IsTrue(someCondition);
}
Run Code Online (Sandbox Code Playgroud)

正如评论指出,Task返回类型是非常重要的.如果将方法声明为返回,则无效void.

  • 注意`Task`返回类型是必需的 - `void`不起作用(至少不在VS2013更新4上) (49认同)
  • (它永远不会工作,因为无法等待`void`-返回异步方法) (3认同)