如何只运行单个测试文件(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。