测试按钮灰掉或右键无选项,根本原因是vitest.config.ts缺失或vitest未本地安装;必须存在配置文件(哪怕export default {})且执行npm install --save-dev vitest,全局安装无效,插件仅转发命令不提供运行时。

测试按钮灰掉或右键无“Run Test”选项
这不是配置漏了,是 VSCode 根本没识别出测试框架的存在。最常见原因是 vitest.config.ts 缺失或 vitest 没本地安装——全局安装 npm install -g vitest 完全无效。
实操建议:
- 确认项目根目录存在
vitest.config.ts(哪怕只写export default {};) - 运行
npm install --save-dev vitest(不是-g) - 改完后必须手动触发:按
Ctrl+Shift+P→ 输入Vitest: Restart Server,不能只靠重载窗口 - Vue/React 项目还需额外配 runtime 插件,否则报
ReferenceError: React is not defined,这不是路径问题,是启动时没加载框架环境
点击 Run Test 后卡住、转圈、或弹空终端
这大概率不是测试代码问题,而是某个插件在保存、调试或进程 spawn 阶段劫持或阻塞了执行链路。尤其当装了 GitLens、Copilot、SFTP 或旧版 Python 扩展时,崩溃常发生在日志写入前。
实操建议:
- 立刻在终端运行
code --disable-extensions,再试一次 Run Test —— 如果能跑通,100% 是插件导致 - 别点“禁用全部扩展”按钮,它只改配置,不阻止早期注入;
--disable-extensions才跳过所有activate()和.vscode/extensions.json加载 - 优先排查近期更新的插件:
ms-python.python、esbenp.prettier-vscode、bradlc.vscode-tailwindcss - 一次禁用多个:例如
code --disable-extension esbenp.prettier-vscode --disable-extension dbaeumer.vscode-eslint
测试能跑但覆盖率不显示或忽高忽低
Coverage Gutters 插件默认只认 lcov.info,而 Vitest 默认输出的是 coverage/vitest-coverage.json。格式不匹配,插件就静默失效,连错误提示都不会有。
实操建议:
- 让 Vitest 输出兼容格式:
npx vitest --coverage --reporter=lcov,生成coverage/lcov.info - 别信状态栏那个百分比数字——它只反映当前打开文件的局部覆盖率
- 真要看整体,必须打开
coverage/index.html(需先生成) - Vitest 的 watch 模式和覆盖率报告互斥:
npx vitest --coverage --watch才能持续刷新 Coverage Gutters 装饰
OUTPUT 面板里看不到真实错误
很多插件崩溃发生在 Extension Host 启动极早期,日志根本来不及写入 OUTPUT 面板。这时候控制台(Ctrl+Shift+I → Console)和进程监控更可信。
实操建议:
- 打开开发者工具,切到 Console 标签页,搜
Extension host terminated unexpectedly或Cannot read property - 运行
Developer: Show Running Extensions,重点关注Activation failed或Activation Time > 1000ms的插件 - 打开系统任务管理器,筛选
exthost进程,看哪个插件启用后 CPU 突增或进程消失 - 某些插件(如旧版 Python、AI 补全类)会尝试
spawn外部进程,路径含空格、中文或权限不足会导致静默失败——错误只藏在exthost日志末尾,UI 里完全不提示











