[TestClass]
public class MyTestClass
{
[TestMethod]
public async void InvisibleMyTestMethod()
{
await Task.Delay(1000);
Assert.IsTrue(true);
}
}
如果我想进行异步单元测试,测试方法必须返回一个任务:
[TestMethod]
public async Task VisibleMyTestMethod()
{
await Task.Delay(1000);
Assert.IsTrue(true);
}
为什么会这样呢?并不是说我绝对需要有一个
使用
有关
这只是因为MSTest不支持
MSTest不支持这一点,可能是因为Microsoft认为这对现有测试的改动太大了(如果给出了一个意外的上下文,现有测试可能会死锁)。
没有编译器警告/错误,因为它是完全有效的C#代码。它不能工作的唯一原因是单元测试框架(例如,我相信xUnit确实支持
我在VS2015中发现,任何用async修饰的测试方法都不会显示在Test Explorer中。最后,我删除了async关键字,用task.wait()替换了测试中的await调用,并对task.result进行了测试。
看起来还不错。还没有用异常测试尝试过它。
var task = TheMethodIWantToTestAsync(someValue);
task.Wait();
var response = task.Result;
Assert.IsNotNull(response);
Assert.IsTrue(response.somevalue);