如何只运行单个测试文件(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 # 按 Node 的默认规则发现测试,不仅限于 *.test.js
只跑文件里的某个用例
node --test --test-name-pattern="加法" math.test.js
--test-name-pattern 按名称正则过滤用例;调试某个失败用例时特别好用。代码里也可以临时把 test 改成 test.only,并用 node --test --test-only math.test.js 启用 only 选择(提交前记得改回)。
各框架的单文件用法
# Jest
npx jest --runTestsByPath 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 吗?
能力取决于 Node 版本:断言、mock、覆盖率和较新版本的快照测试支持各有版本要求。需要复杂 mock 或生态插件时可评估 Jest/Vitest。
Q:覆盖率怎么看?
node --test --experimental-test-coverage(以所用 Node 版本文档为准,不要假定已改名为 --test-coverage),或外接 c8。