c# - 当设置为异步时,是否有人在使用 Ctrl-R、T 运行特定的本地突出显示的测试时遇到问题?

标签 c# visual-studio-2013 mstest

今天我注意到 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/

相关文章:

c# - 添加长字符串时,语法突出显示停止工作

c# - 通过跳过代码覆盖的库函数进行单元测试

c - VS2013遇到一些问题

unit-testing - 测试方法抛出特定异常 .NET

testing - 在 CodedUI 中,如何在不捕获每个页面中菜单的 UIMap 的情况下单击任何页面中的菜单项?

c# - htmlagilitypack 选择节点返回空

c# - 我的递归异步函数会在 UI 线程上运行吗?

c# - 使用户 session 过期(当前用户除外)

c# - NuGet pack 命令如何生成包版本?

visual-studio - 在 Visual Studio 中作为原子操作插入条件断点(这样在设置条件之前它不能触发)