VSCode点击“Run Test”没反应,先检查Output面板→Testing标签页中的真实命令及报错;常见原因是jest等测试框架未安装或路径错误导致命令静默失败,或Jest版本过低不支持--testNamePattern参数。

VSCode 点击“Run Test”没反应,先看终端命令有没有真正发出
VSCode 测试面板点不动,90% 不是插件坏了,而是底层命令根本没发出去。插件点击后实际拼的是类似 npx jest --testNamePattern="should login" 这样的命令——如果项目里没装 jest、vitest 或 pytest,或者路径配错,命令就直接失败,界面卡在 “Running…” 但终端静默。
打开 VSCode 的 Output 面板 → 切到 “Testing” 标签页,能看到真实执行的命令和报错。常见现象:
-
Unknown option: --testNamePattern:说明你用的 Jest 版本 -
command 'testExplorer.run' not found:适配器没加载成功,不是插件没装,是框架没识别到 - 终端一闪而过:可能是命令被拦截,或
jest.pathToJest指向了全局安装的jest(多数适配器只认node_modules/.bin/jest)
Python pytest 单点运行失败,检查工作目录和导入路径
点一个 test_math.py 里的 test_add,结果报 ModuleNotFoundError: No module named 'src'?这不是测试写错了,是 VSCode 默认工作目录没对上。
python.testing.cwd 必须显式设为你代码根目录(比如 "src"),否则 from src.calc import add 就找不到。别依赖自动推导——它不会读 setup.py 或 pyproject.toml 里的配置。
验证方法很简单:在测试文件开头加一行 import sys; print(sys.path),运行时看输出里有没有你期望的路径。
- 别在
settings.json里同时开python.testing.pytestEnabled和python.testing.unittestEnabled,后者会覆盖前者 -
test_*.py和*_test.py是默认匹配模式,mytest.py不会被发现 - conda 环境下,右下角 Python 解释器必须选对,且该环境中已执行
pip install pytest
Jest/Vitest 单个 it 用例跑不起来,关键在框架版本和配置文件
VSCode 测试面板里每个 it 旁都有 ▶ 图标,但点下去整个 describe 块都执行了——这说明框架没把单个 it 当作独立可过滤单元。
Jest ≥ 24 才支持 --testNamePattern,Vitest ≥ 0.30 才支持 -t,Pytest ≥ 6 才支持 -k。低于这些版本,插件再点也是白点。
-
jest.config.js里别同时写testRegex和testMatch,后者优先级更高,容易冲突 - 动态生成测试(如
it.each)或嵌套过深的describe,可能导致插件无法准确定位行号 - 确保
testMatch覆盖你的文件,例如:["**/*.spec.{js,ts}"],而不是只写["**/__tests__/**/*"] - 如果用了
setupFilesAfterEnv加全局 mock,它出错会导致单个用例静默跳过,而非报错
Debug Test 断点不生效,本质是调试器没进入目标代码流
点了 Debug 按钮,程序跑完也没停在断点上?不是 VSCode 调试器坏了,是它压根没把控制权交到你写的测试逻辑里。
Python pytest 下,断点只能打在 test_* 函数体内,不能打在 conftest.py 的 fixture 定义里——除非你加了 --capture=no 并启用 pytest-pdb。异步测试(async def test_*)必须装 pytest-asyncio,否则直接跳过。
Jest 下,launch.json 必须设 "autoAttachChildProcesses": true,否则 Babel/TS 编译等子进程里的代码断不了。
- 别依赖插件自动生成的
.vscode/launch.json,手动配才可靠 - 环境变量(如
NODE_OPTIONS=--require ts-node/register)默认不透传给调试进程,得在launch.json的env字段里显式写 - Go 项目必须用
_test.go文件名,测试函数必须以Test开头,且参数为*testing.T


















