查詢測試
瞭解 Bun 的測試執行器如何發現和篩選專案中的測試檔案
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
bun test <filter> <filter> ...
任何路徑包含其中一個過濾器的測試檔案都會執行。過濾器是子字串匹配,而不是 glob 模式。
例如,執行 utils 目錄下的所有測試:
terminal
bun test utils
這會匹配諸如 src/utils/string.test.ts 和 lib/utils/array_test.js 這樣的檔案。
指定精確檔案路徑
要在測試執行器中執行特定檔案,確保路徑以 ./ 或 / 開頭,以區別於過濾器名稱:
terminal
bun test ./test/specific-file.test.ts
按測試名稱過濾
要根據測試名稱而非檔案路徑過濾測試,使用 -t/--test-name-pattern 選項並傳入正規表示式模式:
terminal
# 執行所有名稱中包含 "addition" 的測試
bun test --test-name-pattern addition
bun test 會將模式與測試名稱進行匹配,測試名稱字首為其所有父級 describe 塊的標籤,各標籤之間以空格分隔。例如,定義如下的測試:
describe("Math", () => {
describe("operations", () => {
test("should add correctly", () => {
// ...
});
});
});
對於此測試,bun test 會將模式與字串 "Math operations should add correctly" 進行匹配。
更改根目錄
預設情況下,Bun 會從當前工作目錄開始查詢測試檔案。可以在 bunfig.toml 中使用 root 選項進行更改:
bunfig.toml
[test]
root = "src" # 僅掃描 src 目錄下的測試
執行順序
測試按以下順序執行:
- 測試檔案會按順序執行,或通過
--parallel在多個工作行程中執行 - 在每個檔案中,測試會按照定義順序依次執行