run([options])
options<Object> 运行测试的配置选项。支持以下属性:concurrency<number> | <boolean> 如果提供了一个数字,则会同时运行那么多测试进程,每个进程对应一个测试文件。如果为true,则会同时运行os.availableParallelism() - 1个测试文件。如果为false,则每次只运行一个测试文件。默认值:false。cwd<string> 指定测试运行器要使用的当前工作目录。
作为从该目录解析文件的基路径,就像 从命令行运行测试 一样。
默认值:process.cwd()。files<Array> 包含要运行文件列表的数组。 默认值: 与 从命令行运行测试 相同。- 'forceExit' <boolean> 配置测试运行器退出进程一次 所有已知的测试都已完成,即使事件循环会 否则保持活跃。默认: 'false'。
globPatterns<Array> 包含要匹配测试文件的全局模式列表的数组。此选项不能与files一起使用。默认值: 与 从命令行运行测试 相同。inspectPort<number> | <Function> 设置测试子进程的调试端口。
这可以是一个数字,或者是一个不接受任何参数且返回数字的函数。如果提供了空值,则每个进程将获得自己的端口,从主进程的process.debugPort递增。如果isolation选项设置为'none',则忽略此选项,因为不会生成子进程。默认值:undefined。isolation<string> 配置测试隔离的类型。如果设置为'process',每个测试文件将在单独的子进程中运行。如果设置为'none',所有测试文件将在当前进程中运行。默认值:'process'。only<boolean> 如果为真,测试上下文将只运行设置了only选项的测试setup<Function> 一个接受TestsStream实例的函数,可用于在任何测试运行之前设置监听器。 默认值:undefined。execArgv<Array> 一个用于传递给node可执行文件的命令行标志数组,当启动子进程时使用。 当isolation为'none'时,此选项无效。 默认值:[]argv<Array> 一个数组,包含在生成子进程时传递给每个测试文件的 CLI 标志。当isolation为'none'时,此选项无效。默认值:[]。signal<AbortSignal> 允许中止正在进行的测试执行。testNamePatterns<string> | <RegExp> | <Array> 一个字符串、正则表达式或正则表达式数组,
可用于仅运行名称匹配所提供模式的测试。
测试名称模式被解释为 JavaScript 正则表达式。
对于每个执行的测试,任何相应的测试钩子(如beforeEach())也会被执行。
默认值:undefined。testSkipPatterns<string> | <RegExp> | <Array> 一个字符串、正则表达式或正则表达式数组,
可用于排除名称匹配提供模式的测试。
测试名称模式将被解释为 JavaScript 正则表达式。
对于每个执行的测试,任何相应的测试钩子(例如beforeEach())也会被执行。
默认值:undefined。timeout<number> 测试执行将在指定的毫秒数后失败。
如果未指定,子测试将继承其父测试的此值。
默认值:Infinity。watch<boolean> 是否以监听模式运行。默认值:false。shard<Object> 在特定分片中运行测试。默认值:undefined。- 'rerunFailuresFilePath' <string> 测试运行者将 存储测试状态,以便下次运行时只重跑失败的测试。 更多信息请参见[重跑失败测试][]。 默认: “未定义”。
coverage<boolean> 启用 代码覆盖率 收集。 默认值:false。coverageExcludeGlobs<string> | <Array> 使用 glob 模式排除特定文件的代码覆盖率,该模式可以匹配绝对路径和相对路径的文件。此属性仅在coverage设置为true时适用。如果同时提供coverageExcludeGlobs和coverageIncludeGlobs,文件必须同时满足 两个 条件才能包含在覆盖率报告中。默认值:undefined。coverageIncludeGlobs<string> | <Array> 使用通配符模式包括代码覆盖范围中的特定文件,该模式可以匹配绝对路径和相对路径。此属性仅在coverage设置为true时适用。如果同时提供了coverageExcludeGlobs和coverageIncludeGlobs,文件必须符合 两个 条件才能被包含在覆盖报告中。默认值:undefined。lineCoverage<number> 要求覆盖行的最小百分比。如果代码覆盖率未达到指定的阈值,进程将以代码1退出。 默认值:0。branchCoverage<number> 要求覆盖的分支至少达到一定百分比。如果代码覆盖率未达到指定的阈值,进程将以代码1退出。 默认值:0。functionCoverage<number> 要求覆盖函数的最小百分比。如果代码覆盖率未达到指定的阈值,进程将以代码1退出。 默认值:0。
- 返回:<TestsStream>
注意: shard 用于在多台机器或多个进程之间水平并行运行测试,非常适合在各种环境下进行大规模执行。它与 watch 模式不兼容,后者用于快速代码迭代,通过在文件更改时自动重新运行测试。
import { tap } from 'node:test/reporters';
import { run } from 'node:test';
import process from 'node:process';
import path from 'node:path';
run({ files: [path.resolve('./tests/test.js')] })
.on('test:fail', () => {
process.exitCode = 1;
})
.compose(tap)
.pipe(process.stdout);const { tap } = require('node:test/reporters');
const { run } = require('node:test');
const path = require('node:path');
run({ files: [path.resolve('./tests/test.js')] })
.on('test:fail', () => {
process.exitCode = 1;
})
.compose(tap)
.pipe(process.stdout);