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 可执行文件的一组 CLI 标志。当 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
      • index <number> 是一个介于 1 和 <total> 之间的正整数,用于指定要运行的分片索引。此选项是 必需的
      • total <number> 是一个正整数,指定将测试文件拆分成的碎片总数。此选项为_必填_。
    • rerunFailuresFilePath <string> 一个文件路径,测试运行者会存储测试的状态,允许下一次运行时只重跑失败的测试。 更多信息请参见[重跑失败测试][Rerunning failed tests]。 默认: undefined
    • coverage <boolean> 启用 代码覆盖率 收集。 默认值: false
    • coverageExcludeGlobs <string> | <Array> 使用通配符模式从代码覆盖率中排除特定文件,该模式可以匹配绝对路径和相对路径。当 coverage 设置为 true 时,该属性才适用。如果同时提供了 coverageExcludeGlobscoverageIncludeGlobs,则文件必须同时满足 两个 条件才能包含在覆盖率报告中。默认值: undefined
    • coverageIncludeGlobs <string> | <Array> 在代码覆盖范围中包含特定文件,使用通配符模式,可匹配绝对或相对文件路径。该属性仅在 coverage 设置为 true 时适用。如果同时提供了 coverageExcludeGlobscoverageIncludeGlobs,则文件必须满足两个条件才能被包含在覆盖报告中。默认值: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);