Jest 如何只运行单个测试文件

用 npx jest --runTestsByPath tests/math.test.js 精确运行一个文件;普通位置参数按路径模式匹配,-t 按测试名称正则过滤。附 watch 与初始化配置说明。

最佳实践
测试检测与质量验证插画

一句话回答:精确运行一个路径用 npx jest --runTestsByPath tests/math.test.js。普通位置参数按路径正则匹配,npx jest math.test.js 可能匹配多份同名文件;再加 -t 'add' 可按测试完整名称的正则过滤用例。

常用方式

npx jest math.test.js                 # 按文件名
npx jest tests/unit/                  # 按目录
npx jest math                         # 部分路径模糊匹配
npx jest math.test.js -t "add"        # 只跑名称含 add 的用例

配合 npm scripts:npm test -- math.test.js(-- 后的参数传给 jest)。

精确到单个用例

npx jest math.test.js -t "add function"

-t 用正则匹配测试完整名称(包括外层 describe),不是纯子串比较。代码里也可以临时用 test.only(...) 独占执行。

watch 模式里的技巧

npx jest --watch

watch 模式下按 p 输入文件名模式、按 t 输入用例名过滤——开发时边改边跑单文件的标准姿势。

提速与排障参数

npx jest math.test.js --verbose         # 逐条列出用例结果
npx jest math.test.js --coverage        # 顺带看覆盖率
npx jest math.test.js --detectOpenHandles   # 跑完不退出时查未关闭句柄
npx jest math.test.js --runInBand       # 串行执行(排除并发干扰)

常见问题(FAQ)

Q:jest math.test.js 提示 "No tests found"?

A:Jest 的 testMatch/testRegex 没匹配到它。确认文件在项目约定位置(默认认 *.test.js、*.spec.js、__tests__ 目录),路径写相对项目根的路径;monorepo 里要在对应包目录下执行。

Q:为什么跑单文件还是加载了很多东西?

A:setupFiles/setupFilesAfterEnv 和全局配置照样加载。如果全局 setup 很重(如建测试库),可用 --setupFiles 覆盖或把重逻辑挪到按需 fixture。

Q:跑单个文件时 mock 不生效?

A:检查 jest.mock() 的模块路径是相对于测试文件的——直接跑单文件时工作目录不同不影响模块解析,但如果用了 moduleNameMapper 别名,确认 jest 配置生效(--config 指定)。


参考资料

本文依据官方资料核对,未进行现场运行测试;代码与配置示例需结合实际版本、权限和环境验证。

延伸阅读

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台