bun test
的文件查找机制决定了哪些文件将被作为测试运行。了解其工作原理有助于您有效地组织测试文件。
默认查找逻辑
默认情况下,bun test
会递归搜索项目目录中符合特定模式的文件:
*.test.{js|jsx|ts|tsx}
- 以.test.js
、.test.jsx
、.test.ts
或.test.tsx
结尾的文件*_test.{js|jsx|ts|tsx}
- 以_test.js
、_test.jsx
、_test.ts
或_test.tsx
结尾的文件*.spec.{js|jsx|ts|tsx}
- 以.spec.js
、.spec.jsx
、.spec.ts
或.spec.tsx
结尾的文件*_spec.{js|jsx|ts|tsx}
- 以_spec.js
、_spec.jsx
、_spec.ts
或_spec.tsx
结尾的文件
排除项
默认情况下,Bun test 会忽略:
node_modules
目录- 隐藏目录(以句点
.
开头的目录) - 不具有类似 JavaScript 扩展名(根据可用加载器)的文件
自定义测试查找
将位置参数用作过滤器
您可以通过向 bun test
传递额外的 positional arguments 来过滤要运行的测试文件。
bun test <filter> <filter> ...
任何路径包含其中一个过滤器的测试文件都将运行。这些过滤器是简单的子字符串匹配,而不是 glob 模式。
例如,要运行 utils
目录中的所有测试:
bun test utils
这将匹配 src/utils/string.test.ts
和 lib/utils/array_test.js
等文件。
指定精确文件路径
要运行测试运行器中的特定文件,请确保路径以 ./
或 /
开头,以将其与过滤器名称区分开。
bun test ./test/specific-file.test.ts
按测试名称过滤
要按名称而不是文件路径过滤测试,请使用 -t
/--test-name-pattern
标志和正则表达式模式。
# run all tests with "addition" in the name
bun test --test-name-pattern addition
该模式将与测试名称的连接字符串进行匹配,该字符串前面加上其所有父 describe 块的标签,并用空格分隔。例如,一个测试定义为
describe("Math", () => {
describe("operations", () => {
test("should add correctly", () => {
// ...
});
});
});
将匹配字符串 "Math operations should add correctly"。
更改根目录
默认情况下,Bun 从当前工作目录开始查找测试文件。您可以使用 bunfig.toml
中的 root
选项来更改此设置。
[test]
root = "src" # Only scan for tests in the src directory
执行顺序
测试按以下顺序运行:
- 测试文件顺序执行(不并行)
- 在每个文件中,测试根据其定义顺序顺序运行。