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 可防止匹配路径被发现并作为测试运行。
当你的项目包含子模块、供应商代码或其他包含你不想让 bun test 捕获的 *.test.ts 文件的目录时使用。
bunfig.toml
--path-ignore-patterns:
terminal
常见用例
bunfig.toml
命令行的
--path-ignore-patterns 标志会完全覆盖 bunfig.toml 中的值——两者不会合并。报告器
JUnit 报告器
直接在配置文件中配置 JUnit 报告器输出文件路径:bunfig.toml
--reporter=junit 和 --reporter-outfile CLI 标志:
terminal
多个报告器
你可以同时使用多个报告器:terminal
bunfig.toml
内存使用
小内存模式
为测试运行器专门启用--smol 内存节省模式:
bunfig.toml
--smol 标志:
terminal
smol 模式通过以下方式减少内存使用:
- 减少 JavaScript 堆使用的内存
- 更积极地触发垃圾回收
- 在可能的情况下减少缓冲区大小
测试执行
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
源码映射处理
Bun 转译每个文件,因此覆盖率结果在报告之前会通过源码映射。coverageIgnoreSourcemaps 可退出此行为,但结果会令人困惑:在转译期间,Bun 可能会移动代码和重命名变量。此选项主要用于调试覆盖问题。
bunfig.toml
安装设置继承
bun test 从 bunfig.toml 的 [install] 部分继承网络和安装配置(如 registry、cafile、prefer 和 exact)。如果你的测试在运行期间访问私有注册表或触发安装,这一点很重要。
bunfig.toml
环境变量
使用.env 文件为测试设置环境变量,Bun 会自动从项目根目录加载这些文件。对于测试特定的变量,创建一个 .env.test 文件,bun test 会自动加载它:
.env.test
完整配置示例
一个展示可用测试配置选项的示例:bunfig.toml
CLI 覆盖行为
命令行选项始终覆盖配置文件设置:bunfig.toml
terminal