Skip to content

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> ...

パスにフィルターの 1 つが含まれるテストファイルは実行されます。これらのフィルターは単純な部分文字列マッチであり、glob パターンではありません。

例えば、utils ディレクトリ内のすべてのテストを実行するには。

bash
bun test utils

これは src/utils/string.test.tslib/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.tomlroot オプションでこれを変更できます。

toml
[test]
root = "src"  # src ディレクトリでのみテストをスキャン

実行順序

テストは次の順序で実行されます。

  1. テストファイルは順次実行されます(並列ではありません)
  2. 各ファイル内では、テストは定義順序に基づいて順次実行されます

Bun by www.bunjs.com.cn 編集