我正在写一些超级简单的异步代码。只是将文件保存在线程外。
我想使用Microsoft Visual Studio Team System 2008中的MSTest单元测试框架来测试此代码。
我该怎么做呢?
我想简单地阻塞测试方法,直到方法返回。我可以想象有一些方法可以做到这一点,但我为此感到震惊,没有任何最佳实践或帮助程序类。
我对Silverlight看到了很多,但没有什么通用的。
我正在写一些超级简单的异步代码。只是将文件保存在线程外。
我想使用Microsoft Visual Studio Team System 2008中的MSTest单元测试框架来测试此代码。
我该怎么做呢?
我想简单地阻塞测试方法,直到方法返回。我可以想象有一些方法可以做到这一点,但我为此感到震惊,没有任何最佳实践或帮助程序类。
我对Silverlight看到了很多,但没有什么通用的。
Answers:
Visual Studio 2012(以前称为“ Visual Studio 11”)引入了对异步测试的支持。看起来像这样:
[TestMethod]
public async Task FooTest()
{
var result = await SomeAsyncOperation();
Assert.IsTrue(someCondition);
}
正如评论指出,在Task
返回类型是非常重要的。如果将方法声明为returning,则将无法正常工作void
。
Task
返回类型是强制性的-void
无效(至少在VS2013 Update 4上无效)
void
无法等待返回的异步方法)
与其直接调用System.IO方法,不如尝试使用SystemWrapper库。然后,在测试中,您可以根据需要模拟调用,将您喜欢的任何内容(包括错误条件)返回到测试中,并验证逻辑是否按预期工作。
如果您想查看示例,请查看此博客文章,其中显示了如何将其与RhinoMocks结合使用。