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 に追加の位置引数を渡すことで、どのテストファイルを実行するかをフィルタリングできます。
bun test <filter> <filter> ...パスにフィルターの 1 つが含まれるテストファイルは実行されます。これらのフィルターは単純な部分文字列マッチであり、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 フラグを正規表現パターンで使用します。
# 名前に "addition" を含むすべてのテストを実行
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" # src ディレクトリでのみテストをスキャン実行順序
テストは次の順序で実行されます。
- テストファイルは順次実行されます(並列ではありません)
- 各ファイル内では、テストは定義順序に基づいて順次実行されます