如何只运行单个测试文件(Node 内置测试运行器)?

Node 18+ 内置测试运行器,跑单个测试文件直接 node --test test/math.test.js;也可以用 --test-name-pattern 只跑文件里某个用例。jest/mocha 的单文件用法一并附上。

最佳实践
文件、模块与依赖组织示意

Node 18+ 内置测试运行器,直接指定文件路径即可:

node --test test/math.test.js

内置 node:test 完整示例

// math.test.js
const test = require('node:test');
const assert = require('node:assert');
const { add } = require('./math');

test('加法正确', () => {
  assert.strictEqual(add(2, 3), 5);
});

test('处理负数', () => {
  assert.strictEqual(add(-1, 1), 0);
});
node --test math.test.js          # 只跑这个文件
node --test                       # 跑所有 *.test.js

只跑文件里的某个用例

node --test --test-name-pattern="加法" math.test.js

--test-name-pattern 按名称正则过滤用例;调试某个失败用例时特别好用。代码里也可以临时把 test 改成 test.only 只跑它(提交前记得改回)。

各框架的单文件用法

# Jest
npx jest math.test.js
npx jest -t "加法"              # 按用例名过滤

# Mocha
npx mocha test/math.test.js

# Vitest
npx vitest run math.test.js

常见问题(FAQ)

Q:node --test 支持 watch 模式吗?
Node 18.13+ 支持:node --test --watch,文件变动自动重跑。

Q:内置运行器够用吗,还要装 Jest 吗?
中小项目够用(断言、mock、覆盖率都有)。需要快照测试、复杂 mock、丰富生态插件时再上 Jest/Vitest。

Q:覆盖率怎么看?
node --test --experimental-test-coverage(新版本为 --test-coverage),或外接 c8。

参考资料

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

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

立即开始

选择观测云版本

代码托管平台