mcpField
T
test-detect

test-detect

github.com/davila7テスト・品質33.0k40 回インストール今日更新
リポジトリ

test-detect について

プロジェクトのテストフレームワークを検出し、対応するテストを実行するスキルです。設定に基づいて全体または個別ファイルのテストを実行し、テストファイルの生成や結果報告も行います。

主な機能

  1. 01テストフレームワークの検出
  2. 02全体または個別テストの実行
  3. 03ソースファイルからのテスト生成
  4. 04結果と失敗内容の報告
  5. 05複数フレームワークと Monorepo への対応

活用シーン

  1. 01既存プロジェクトのテスト実行
  2. 02特定ソースファイルのテスト検索と実行
  3. 03関数、クラス、コンポーネントのテスト生成
  4. 04複数フレームワーク環境での実行コマンド選択

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/davila7/claude-code-templates --skill test-detect

インストール後、Claude Code で/test-detectを入力して読み込まれたか確認します。

詳細

Test Detect

現在のプロジェクトで使用されているテストフレームワークを自動的に検出し、適切なテストを実行します。

ワークフロー

ステップ 1: テストフレームワークを検出する

以下のファイルを順番に確認します(最初に一致したものを採用)。

チェック対象フレームワーク実行コマンド
vitest.config.* が存在するか、devDeps に vitest があるVitestnpx vitest run
jest.config.* が存在するか、devDeps に jest があるJestnpx jest
playwright.config.* が存在するPlaywrightnpx playwright test
cypress.config.* が存在するCypressnpx cypress run
pytest.ini、conftest.py、または [tool.pytest] を含む pyproject.tomlpytestpython -m pytest
go.mod が存在するGo testgo test ./...
Cargo.toml が存在するRust/cargocargo test
mix.exs が存在するExUnitmix test
rspec を含む GemfileRSpecbundle exec rspec
package.json の scripts.test が存在するnpm testnpm test

処理を進める前に、検出したフレームワークを報告します。

ステップ 2: 引数を解析する

$ARGUMENTS を確認してモードを判断します。

  • 引数なし、または "all": テストスイート全体を実行する(ステップ 3)
  • ファイルパス(例: src/auth/login.ts): そのファイルのテストを実行する(ステップ 4)
  • "generate" + ファイルパス(例: generate src/utils.ts): テストを生成する(ステップ 5)
ステップ 3: テストスイート全体を実行する

検出したテストコマンドを実行します。完了後に以下を行います。

  • テストの総数、成功、失敗、スキップの数を報告する
  • テストが失敗した場合は、最初の 3 件の失敗メッセージを file:line の参照付きで表示する
  • 「/test-detect <失敗したファイル> を実行して、特定の失敗を調査してください」と提案する
ステップ 4: 特定のファイルのテストを実行する

ソースファイルのパスが与えられたら、そのテストファイルを探します。

検索戦略(順番に試す):

  1. __tests__/<filename>.test.<ext>(Jest の慣例)
  2. <filename>.test.<ext>(同じディレクトリに配置)
  3. <filename>.spec.<ext>(別の慣例)
  4. test/<filename>_test.<ext>(Go/Python の慣例)
  5. tests/test_<filename>.<ext>(pytest の慣例)
  6. <filename>_test.go(Go の慣例)

Glob を使って一致するファイルを探します。見つかった場合は、そのテストファイルだけを実行します。

フレームワークコマンド
Vitestnpx vitest run <test-file>
Jestnpx jest <test-file>
Playwrightnpx playwright test <test-file>
pytestpython -m pytest <test-file>
Gogo test -run <TestName> ./<package>/
Cargocargo test <test_name>

テストファイルが見つからない場合は、「このファイルのテストが見つかりません。生成しますか? /test-detect generate <file> を実行してください」と尋ねます。

ステップ 5: テストを生成する

ソースファイルを読み込み、以下を分析します。

  1. エクスポートされているすべての関数、クラス、コンポーネントを特定する
  2. フレームワークに適したテストパターンを決定する
  3. 以下を含むテストファイルを生成する
    • import 文
    • 関数やクラスごとの describe ブロック
    • 正常系、エッジケース、エラーケースを対象とする it/test ブロック
    • フレームワークに適したアサーションとモック

慣例的な場所に保存する(検出したフレームワークごと):

  • Jest/Vitest: __tests__/<filename>.test.<ext> または <filename>.test.<ext>(既存の慣例に合わせる)
  • pytest: tests/test_<filename>.py
  • Go: <filename>_test.go(同じディレクトリ)
  • RSpec: spec/<filename>_spec.rb

生成されたファイルのパスを表示し、新しいテストを実行するかどうかをユーザーに尋ねます。

ヒント

  • 複数のフレームワークが検出された場合(例: 単体テスト用の Vitest と E2E 用の Playwright)は、両方に言及し、既定では単体テスト用のフレームワークを使用する
  • モノレポの場合は、現在のディレクトリから最も近い設定ファイルを基に検出する
  • package.json に test と test:unit/test:e2e の両方のスクリプトがある場合、文脈から明らかであれば具体的なものを優先する

コメント