如何使用MSTest测试异步代码

时间:2010-01-13 22:14:45

标签: .net unit-testing

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

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

我该怎么做?

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

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

2 个答案:

答案 0 :(得分:120)

Visual Studio 2012(以前称为“Visual Studio 11”)introduced support for async tests。它看起来像这样:

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

如评论中所述, Task返回类型非常重要。如果将方法声明为返回void

,则无效

答案 1 :(得分:0)

不要直接调用System.IO方法,而是尝试使用SystemWrapper库。然后在测试中,您可以根据需要模拟调用,返回测试中的任何内容,包括错误条件,并验证您的逻辑是否按预期工作。

如果您想查看示例,请查看this blog post,了解如何与RhinoMocks一起使用。