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 傳遞額外的位置參數來過濾運行哪些測試文件:
bash
bun test <filter> <filter> ...任何路徑包含其中一個過濾器的測試文件都將運行。這些過濾器是簡單的子字符串匹配,而不是 glob 模式。
例如,要運行 utils 目錄中的所有測試:
bash
bun test utils這將匹配 src/utils/string.test.ts 和 lib/utils/array_test.js 等文件。
指定確切文件路徑
要在測試運行器中運行特定文件,請確保路徑以 ./ 或 / 開頭,以區別於過濾器名稱:
bash
bun test ./test/specific-file.test.ts按測試名稱過濾
要按名稱而不是文件路徑過濾測試,請使用 -t/--test-name-pattern 標志和正則表達式模式:
sh
# 運行名稱中包含 "addition" 的所有測試
bun test --test-name-pattern addition模式針對測試名稱與所有父級 describe 塊的標簽連接的字符串進行匹配,用空格分隔。例如,定義為以下的測試:
ts
describe("Math", () => {
describe("operations", () => {
test("should add correctly", () => {
// ...
});
});
});將針對字符串 "Math operations should add correctly" 進行匹配。
更改根目錄
默認情況下,Bun 從當前工作目錄開始查找測試文件。你可以在 bunfig.toml 中使用 root 選項更改此設置:
toml
[test]
root = "src" # 僅在 src 目錄中掃描測試執行順序
測試按以下順序運行:
- 測試文件按順序執行(不並行)
- 在每個文件內,測試根據其定義順序按順序運行