You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Visual Studio会终止返回void而非Task的异步测试方法?

为何返回void的异步测试在Visual Studio 17.14.0中不被识别?

这不是Visual Studio的错误,而是测试框架(MSTest)的设计规范要求。

核心原因:

  • MSTest等主流.NET测试框架对异步测试的签名有明确要求:异步测试方法必须返回Task(无返回值)或Task<T>(有返回值),这样框架才能正确跟踪异步操作的完成状态,等待测试逻辑执行完毕后再统计结果。
  • async void的方法签名不符合测试框架的识别规则,会被Test Explorer忽略;同时在运行时,框架无法等待异步逻辑完成,直接终止测试流程,导致你看到的"0 Tests run"结果。

为什么async void不能用于测试?

async void原本是为UI事件处理器设计的,这类场景不需要外部调用者等待执行完成。但在测试场景中:

  • 测试框架无法捕获async void方法中的异常(异常会直接抛到线程池,可能导致程序崩溃或测试无响应);
  • 框架无法判断异步逻辑何时结束,会提前结束测试进程,导致测试逻辑未执行完全就被终止。

正确的异步测试写法:

将返回类型改为Task即可,这是符合测试框架规范的标准写法:

[TestMethod]
[DoNotParallelize]
public async Task ComponentDrawingAspectParserTest()
{ 
    // 测试逻辑
}

内容的提问来源于stack exchange,提问作者Marťas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 18:52:03