VSCode中Run Test没反应的根本原因是vitest.config.ts缺失或vitest未本地安装;必须存在配置文件(哪怕export default {})且执行npm install --save-dev vitest,全局安装无效,插件仅负责UI不提供运行时。

VSCode里点Run Test没反应,先确认vitest.config.ts和本地安装
根本不是插件装得不够多,而是Vitest启动链在第一步就断了:没配置文件,或没本地安装。VSCode的Test Explorer UI(比如vitest-explorer)只负责渲染按钮和转发命令,它不提供执行环境,也不读全局vitest。
-
vitest.config.ts必须存在项目根目录,哪怕只写export default {};——空配置比不配置强 -
npm install --save-dev vitest必须执行,全局安装npm install -g vitest完全无效 - 改完配置后VSCode不会自动重载:关掉测试侧边栏再打开,或按
Ctrl+Shift+P→ 输入Vitest: Restart Server
单个it用例点不动?检查testMatch是否覆盖到你的文件路径
Vitest默认只扫**/*.test.ts和**/*.spec.ts,如果你把测试放在src/__tests__/Button.test.ts,就得显式配testMatch: ['**/__tests__/**/*.test.ts']。否则UI面板里压根看不到那个it,更别说点播了。
- 别混用
include和testMatch:testMatch是第一道门,决定“哪些文件算测试”;include只是对已匹配的文件做二次过滤 - Windows下路径分隔符不用特别处理,Vitest内部已normalize,写
/或\都行 - Vue/React项目还要额外注册插件,否则
it里一写JSX就报ReferenceError: React is not defined,根本进不到执行阶段
想跟踪测试执行流向?别依赖UI面板,直接看终端输出+加--no-file-parallelism
Vitest默认用worker并行跑测试,VSCode调试器attach不到子进程,断点基本失效,你也看不到真实执行顺序。要观察单个it怎么一步步走、哪步卡住、哪个beforeEach先执行,必须切回单线程模式。
- 手动在终端运行:
npx vitest --no-file-parallelism --test-timeout=0,这时断点能停住,console.log也能按序输出 - VSCode内置“Debug Test”右键菜单往往不传参,优先用上面这条命令验证逻辑通路
- 如果用了
beforeAll/afterAll,注意它们的生命周期范围——不是每个it都重新执行beforeAll,而是整个describe块共享
覆盖率数字忽高忽低?别信状态栏百分比,那是当前文件局部值
VSCode状态栏右下角那个覆盖率数字,只反映你当前打开的文件被测到的行数比例,不是全量。真正要看整体流向和覆盖缺口,得打开HTML报告:coverage/index.html。
-
Coverage Gutters插件默认只认lcov.info,而Vitest默认输出的是coverage/vitest-coverage.json——格式不匹配,插件压根读不到 - 要么让Vitest输出兼容格式:
npx vitest --coverage --reporter=lcov,生成coverage/lcov.info - 要么换工具:
Wallaby.js原生支持vitest-coverage.json,无需转换 - watch模式和覆盖率报告互斥:VSCode点Run Test是单次执行;想持续看变化,得手动跑
npx vitest --coverage --watch,再配合Coverage Gutters刷新装饰


















