Skip to main content
bun test 通过将文件路径与一组模式进行匹配,来决定将哪些文件作为测试运行。

默认发现逻辑

默认情况下,bun test 会递归搜索项目目录,查找匹配以下模式的文件:
  • *.test.{js|jsx|ts|tsx|mjs|cjs|mts|cts} - 以 .test.js.test.jsx.test.ts.test.tsx.test.mjs.test.cjs.test.mts.test.cts 结尾的文件
  • *_test.{js|jsx|ts|tsx|mjs|cjs|mts|cts} - 以 _test.js_test.jsx_test.ts_test.tsx_test.mjs_test.cjs_test.mts_test.cts 结尾的文件
  • *.spec.{js|jsx|ts|tsx|mjs|cjs|mts|cts} - 以 .spec.js.spec.jsx.spec.ts.spec.tsx.spec.mjs.spec.cjs.spec.mts.spec.cts 结尾的文件
  • *_spec.{js|jsx|ts|tsx|mjs|cjs|mts|cts} - 以 _spec.js_spec.jsx_spec.ts_spec.tsx_spec.mjs_spec.cjs_spec.mts_spec.cts 结尾的文件

排除项

默认情况下,bun test 会忽略:
  • node_modules 目录
  • 隐藏目录(以句点 . 开头的目录)
  • 不具有类似 JavaScript 扩展名的文件(基于可用的加载器

自定义测试发现

位置参数作为过滤器

要过滤要运行的测试文件,请向 bun test 传入额外的位置参数:
terminal
任何路径包含其中一个过滤器的测试文件都会运行。过滤器是子字符串匹配,而不是 glob 模式。 例如,运行 utils 目录下的所有测试:
terminal
这会匹配诸如 src/utils/string.test.tslib/utils/array_test.js 这样的文件。

指定精确文件路径

要在测试运行器中运行特定文件,确保路径以 .// 开头,以区别于过滤器名称:
terminal

按测试名称过滤

要根据测试名称而非文件路径过滤测试,使用 -t/--test-name-pattern 选项并传入正则表达式模式:
terminal
该模式会与测试名称进行匹配,测试名称前会加上其所有父级 describe 块的标签,并以空格分隔。例如,定义如下的测试:
math.test.ts
此测试会与字符串 "Math operations should add correctly" 进行匹配。

更改根目录

默认情况下,Bun 会从当前工作目录开始查找测试文件。可以在 bunfig.toml 中使用 root 选项进行更改:
bunfig.toml

执行顺序

测试按以下顺序运行:
  1. 测试文件按顺序运行(不并行)
  2. 在每个文件中,测试按定义顺序依次运行