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
utils 目录中的所有测试:
terminal
src/utils/string.test.ts 和 lib/utils/array_test.js 之类的文件。
指定精确的文件路径
要在测试运行器中运行特定文件,请确保路径以./ 或 / 开头,以便与过滤器名称区分:
terminal
按测试名称过滤
要按名称而非文件路径过滤测试,请使用带正则表达式模式的-t/--test-name-pattern 标志:
terminal
describe 块标签为前缀的测试名称进行匹配。例如,定义为以下内容的测试:
math.test.ts
更改根目录
默认情况下,Bun 从当前工作目录开始查找测试文件。使用bunfig.toml 中的 root 选项更改此行为:
bunfig.toml
执行顺序
测试按以下顺序运行:- 测试文件顺序运行(不并行)
- 在每个文件中,测试按定义顺序运行