Skip to main content
使用 bunfig.toml 和命令行选项配置 bun test

配置文件

要在 bunfig.toml 中配置 bun test,请添加一个 [test] 部分:
bunfig.toml

测试发现

root

root 选项设置 Bun 扫描测试的目录,而不是项目根目录。
bunfig.toml

示例

bunfig.toml

预加载脚本

preload 选项会在测试运行前加载脚本:
bunfig.toml
这等同于命令行中使用 --preload
terminal

常见预加载用例

test-setup.ts
global-mocks.ts

路径忽略模式

pathIgnorePatterns 使用 glob 模式从测试发现过程中完全排除文件和目录。与只影响覆盖率报告的 coveragePathIgnorePatterns 不同,pathIgnorePatterns 会阻止匹配的路径被发现并作为测试运行。 当项目包含子模块、第三方托管代码或其他包含 *.test.ts 文件、但不希望被 bun test 识别的目录时,可以使用此选项。
bunfig.toml
这等同于在命令行中使用 --path-ignore-patterns
terminal
Bun 会在扫描期间清理匹配模式的目录,并且不会遍历其内容,因此忽略大型目录树的开销很低。

常见用例

bunfig.toml
命令行 --path-ignore-patterns 标志会完全覆盖 bunfig.toml 的值——两者不会合并。

报告器

JUnit 报告器

在配置文件中直接配置 JUnit 报告器的输出文件路径:
bunfig.toml
这与命令行参数 --reporter=junit--reporter-outfile 相辅相成:
terminal

多重报告器

你可以同时使用多个报告器:
terminal
bunfig.toml

内存使用

smol 模式

为测试运行器开启 --smol 的节省内存模式:
bunfig.toml
该选项等同于命令行使用 --smol
terminal
smol 模式通过以下方式降低内存占用:
  • 使用更小的 JavaScript 堆内存
  • 更积极地进行垃圾回收
  • 尽可能减少缓冲区大小
在内存受限的环境中使用它,例如 CI 运行器,或用于大型测试套件。

测试执行

concurrentTestGlob

启用并发测试执行,运行匹配 glob 模式的测试文件。
bunfig.toml
匹配该模式的测试文件的行为就像传入了 --concurrent 标志:这些文件中的每个测试都会并发运行。可以使用此配置逐步将测试套件迁移到并发执行,或者在其余测试保持串行运行的同时,并发运行某一类测试(例如集成测试)。 --concurrent CLI 标志会覆盖此设置,无论 glob 模式如何,都会强制所有测试并发运行。

randomize

随机执行测试,用于发现存在隐式依赖的测试:
bunfig.toml

seed

指定用于生成可复现随机顺序的种子。需要设置 randomize = true
bunfig.toml

retry

所有测试的默认重试次数。Bun 会在测试失败时,最多按此次数重试。每个测试的 { retry: N } 会覆盖此值。默认为 0(不重试)。
bunfig.toml
--retry CLI 标志会覆盖此设置。

rerunEach

多次重新运行每个测试文件,用于发现不稳定测试:
bunfig.toml

覆盖率选项

基础覆盖率设置

bunfig.toml

避免测试文件计入覆盖率

从覆盖率报告中排除匹配测试模式的文件(例如 *.test.ts):
bunfig.toml

覆盖率阈值

将覆盖率阈值指定为单个数字,或指定为包含各指标阈值的对象:
bunfig.toml
设置任何阈值都会启用 fail_on_low_coverage,即当实际覆盖率低于阈值时,测试运行会失败。

阈值示例

bunfig.toml

忽略路径模式

使用 glob 模式排除特定文件或文件模式不计入覆盖率报告:
bunfig.toml
匹配任意这些模式的文件都会从覆盖率计算和报告中排除。参见代码覆盖率

常见忽略模式

bunfig.toml

Source Map 处理

Bun 会转译每个文件,因此覆盖率结果会先经过 source map 处理,然后再生成报告。coverageIgnoreSourcemaps 可选择不执行此处理,但结果会令人困惑:在转译过程中,Bun 可能会移动代码并重命名变量。此选项主要用于调试覆盖率问题。
bunfig.toml
使用此选项时,建议在源代码文件顶部添加 // @bun 注释,来避免转译过程。

安装设置继承

bun test 会从 bunfig.toml[install] 部分继承网络和安装配置(例如 registrycafilepreferexact)。如果测试需要访问私有注册表,或在运行期间触发安装,这一点就很重要。
bunfig.toml

环境变量

使用 .env 文件为测试设置环境变量,Bun 会自动从项目根目录加载这些文件。对于特定于测试的变量,创建一个 .env.test 文件,bun test 会自动加载该文件:
.env.test

完整配置示例

展示可用测试配置选项的示例:
bunfig.toml

命令行覆盖行为

命令行选项总是会覆盖配置文件设置:
bunfig.toml
terminal