今天我注意到 GUI 中突出显示的测试方法上的 Ctrl-R、Ctrl-T 不会调试我刚刚编写的测试,如下所示:
[TestMethod]
public async void Test()
{
await asyncMethod();
}
项目已构建,但测试未运行。在任何地方都找不到失败消息或错误消息。
如果我只是删除 async 关键字,那么一切都会正常。这是怎么回事?
在代码中,我正在等待异步调用。我不明白为什么测试运行程序无法处理它。
编辑:
查看测试输出后,消息如下:
UTA007:类 blah 中定义的方法 blah 没有正确的签名。用 [TestMethod] 属性标记的测试方法必须是非静态的、公共(public)的、返回类型为 void 且不应带任何参数。示例:public void Test.Class1.Test()。此外,如果您正在运行异步单元测试,返回类型必须是 Task。示例:公共(public)异步任务 Test.Class1.Test2() ========== 发现测试完成: 3 发现 (0:00:00.1367583) ==========
我通常不看它,Visual Studio 希望更频繁地向我展示构建输出和错误。
最佳答案
测试发现过程将不允许async void
单元测试;我相信它会在输出窗口中发出警告。由于测试发现跳过了 async void
方法,因此它实际上不会运行。
对于异步单元测试,请使用async Task
而不是async void
。我有更多详细信息my recent MSDN article on the subject .
关于c# - 当设置为异步时,是否有人在使用 Ctrl-R、T 运行特定的本地突出显示的测试时遇到问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27328021/