mcpField
U
unity-test

unity-test

github.com/besty0728テスト・品質1.9k87 回インストール今日更新
リポジトリ

unity-test について

Unity プロジェクトのテスト管理スキルです。EditMode と PlayMode のテストを検出・実行して結果を取得でき、テストスクリプトのテンプレートも作成します。

主な機能

  1. 01テストとカテゴリの検出・一覧表示
  2. 02全件または指定テストの実行
  3. 03非同期テスト結果の取得
  4. 04最新結果と集計結果の確認
  5. 05EditMode と PlayMode のテンプレート作成

活用シーン

  1. 01EditMode または PlayMode テストの実行
  2. 02クラス名やメソッド名によるテスト検索
  3. 03非同期テストジョブの結果確認
  4. 04テストスクリプトテンプレートの作成

インストール

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

$npx skills add https://github.com/besty0728/unity-skills --skill unity-test

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

詳細

このモジュールのスキルを呼び出す前に: 名前や説明から推測したパラメーターを使ってスキルを呼び出そうとしている場合は、いったん停止してください。まずこのファイルを読むか、GET /skills/recommend?includeSchema=true でスキーマを取得してください。recommend/schema からパラメーター定義をすでに取得している場合は、そのまま dryRun に進めます。

トリガー

  • EditMode/PlayMode テストの実行
  • テストの検出または一覧表示
  • 非同期テスト結果のポーリング
  • テストファイルのひな形作成
  • EditMode/PlayMode テストの実行、テストの検出または一覧表示、非同期テスト結果のポーリング、テストファイルのひな形作成

テストスキル

Unity テストを実行および管理します。

実行モード

  • 承認:読み取り専用スキル(test_get_result / test_list / test_discover_get_result / test_get_last_result / test_list_categories / test_smoke_skills / test_get_summary、SkillMode.SemiAuto に指定)は直接実行します。実行/検出/作成を行うスキル(test_run / test_run_by_name / test_discover_start / test_cancel / test_create_editmode / test_create_playmode、デフォルトは SkillMode.FullAuto)にはユーザーの許可が必要です。許可後、サーバーが1ステップで実行し、結果を返します(ジョブはすぐにキューに追加されます)。

  • 自動/バイパス:直接実行します。

  • このモジュールには NeverInSemi スキルが4つあります(IsForbiddenInSemi によって自動判定):

    • MayEnterPlayMode = true:test_run、test_run_by_name
    • MayTriggerReload = true:test_create_editmode、test_create_playmode(MutatesAssets = true も指定)

    承認モードでは、これら4つは MODE_FORBIDDEN を返します。バイパスまたは Allowlist に該当する場合にのみ回避できます。注意:test_run(testMode="PlayMode") / test_run_by_name は Unity TestRunner を PlayMode に切り替えます。test_create_editmode / test_create_playmode は新しい .cs ファイルをディスクに保存した後、Domain Reload を引き起こします。

  • 非同期のルール:test_run / test_run_by_name / test_discover_start / test_create_* は jobId をすぐに返します。test_get_result(jobId) / test_discover_get_result(jobId) でポーリングしてください。Unity TestRunner は直列実行されるため、テストの実行中に2つ目の test_run を開始しないでください。

禁止事項(よくある誤り):

  • test_run_all は存在しません → test_run または test_run_by_name を使用してください
  • test_create_template は存在しません → test_create_editmode または test_create_playmode を使用してください
  • test_get_status は存在しません → テスト実行で取得した jobId を使って test_get_result を使用してください
  • テストスキルは非同期です。jobId を返すため、test_get_result(jobId) でポーリングしてください
  • ここでは Unity Test Runner は直列実行されます。別のテストジョブがまだ実行中の場合は、2つ目の test_run を開始しないでください
  • 記憶から推測するのではなく、正確なシグネチャを確認するには unity_skills.get_skills(category="Test") または GET /skills/schema を優先してください

ルーティング:

  • コンパイルエラーの確認 → debug モジュールの debug_check_compilation を使用
  • テストスクリプトの作成 → test_create_editmode / test_create_playmode を使用し、その後 script モジュールで変更
  • 多数のスキルにわたる広範なリグレッション調査 → 一時的なプローブを使ってワークフロー/バッチの永続データを汚さない test_smoke_skills を使用

スキル

test_list

Unity Test Runner の非同期検出を使って、利用可能なテストを一覧表示します。初回呼び出し(キャッシュミス)では pendingDiscovery=true と discoveryJobId を返します。test_discover_get_result(jobId) でポーリングしてから、test_list を再試行してください。 パラメーター:

  • testMode(string、任意):EditMode または PlayMode。デフォルト:EditMode。
  • limit(int、任意):一覧表示するテストの最大数。デフォルト:100。

戻り値: { success, testMode, count, total, truncated, tests, pendingDiscovery, discoveryJobId, discoveryStatus } — ここで count は返された件数、total は検出された件数です。truncated: true の場合は limit を増やしてください。(test_discover_get_result では count は合計件数を示します。詳しくは該当箇所の警告を参照してください。)

test_run

Unity テストを非同期で実行します。jobId をすぐに返すため、test_get_result(jobId) でポーリングしてください。 パラメーター:

  • testMode(string、任意):EditMode または PlayMode。デフォルト:EditMode。 戻り値: { success, status, jobId, kind, testMode, filter, message }
test_get_result

テスト実行の結果を取得します。 パラメーター:

  • jobId(string、必須):test_run / test_run_by_name のジョブ ID。

戻り値: { success, jobId, status, totalTests, passedTests, failedTests, skippedTests, inconclusiveTests, otherTests, failedTestNames, failedTestDetails, elapsedSeconds, resultSummary, error } — 各失敗の詳細には、name、resultState、message、stackTrace、durationSeconds、output が含まれます。

test_cancel

実行中のテストジョブをキャンセルします(サポートされている場合)。Unity TestRunner には強制キャンセル機能がないため、ベストエフォートで実行します。 パラメーター:

  • jobId(string、必須):キャンセルするジョブ ID。

戻り値: { success, jobId, status, cancelled, note, warnings }

test_discover_start

非同期の Unity Test Runner 検出を開始し、検出用の jobId を返します。検出を明示的に制御したい場合は、これを直接使用してください。それ以外の場合は、キャッシュミス時に test_list / test_list_categories が検出を開始します。

パラメーター型必須デフォルト説明
testModestringいいえEditModeEditMode または PlayMode

戻り値: { success, status, jobId, kind, testMode, message }

test_discover_get_result

非同期の Unity Test Runner 検出ジョブの結果を取得します。

パラメーター型必須デフォルト説明
jobIdstringはい-検出ジョブ ID
limitintいいえ100応答に含めるテストの最大数。デフォルトでは、大規模なテストスイートが通知なく上限で切り詰められます

戻り値: { success, jobId, status, testMode, discoveryMode, count, returned, truncated, tests, error }

ここでの count は合計数、returned は取得できた数です。 count は検出されたテスト数、returned は limit 適用後に tests に含まれるテスト数です。truncated: true はこの2つの数が異なることを示します。残りを確認するには limit を増やしてください。テストが300件あるプロジェクトでは、デフォルト設定の場合、count: 300, returned: 100, truncated: true が返されます。テストスイートの規模を len(tests) から推定しないでください。

⚠️ test_list では count の意味が逆です。 そちらでは count は返された件数で、total は検出された件数です。ここでは count は検出された件数で、returned は返された件数です。2つのスキルはそのように提供されており、それぞれの count はワイヤー互換性のため固定されています。そのため、対称性を前提にしないでください。部分的なリストかどうかは、両方にある truncated を確認してください。また、合計数は test_list では total、ここでは count を参照してください。

test_run_by_name

クラス名またはメソッド名を指定してテストを実行します。

パラメーター型必須デフォルト説明
testNamestringはい-実行するテストのクラス名またはメソッド名
testModestringいいえEditModeEditMode または PlayMode

戻り値: { success, jobId, testName, testMode }

test_get_last_result

最新のテスト実行結果を取得します。

パラメーターはありません。

戻り値: { jobId, status, total, passed, failed, skipped, inconclusive, other, failedNames }

test_list_categories

非同期の Unity Test Runner 検出を通じて、テストカテゴリーを一覧表示します。キャッシュミス時の動作とポーリングのパターンは test_list と同じです。

パラメーター型必須デフォルト説明
testModestringいいえEditModeEditMode または PlayMode

戻り値: { success, count, categories, pendingDiscovery, discoveryJobId, discoveryStatus }

test_smoke_skills

登録済みスキル全体で再利用可能なスモークテストを実行します。

パラメーター型必須デフォルト説明
categorystringいいえ-1 つのスキルカテゴリのみをテストします(SkillCategory の名前。未知の名前を指定すると、すべてのスキルをテストせずに拒否されます)
nameContainsstringいいえ-部分一致する名前でスキルを絞り込みます
excludeNamesCsvstringいいえ-除外するスキル名をカンマ区切りで指定します
executeReadOnlyboolいいえtrue安全な読み取り専用スキルを直接実行します
includeMutatingboolいいえtruedryRun スモークテストを通じて変更を伴うスキルを含めます
limitintいいえ0検査するスキルの最大数。0 はすべてを意味します

戻り値: { success, totalSkills, executedCount, dryRunCount, failureCount, results }

test_create_editmode

EditMode テストスクリプトのテンプレートを作成します。.cs ファイルを同期的に書き込み、コンパイル監視用の jobId を返します。スクリプトの作成によって Domain Reload が発生するため、サーバーが一時的に利用できなくなる場合があります。serverAvailability に一時的な利用不可を示す情報が含まれます。

パラメーター型必須デフォルト説明
testNamestringはい-作成するテストクラスの名前
folderstringいいえAssets/Tests/Editorテストスクリプトのフォルダーパス

戻り値: { success, status, path, testName, jobId, serverAvailability }

test_create_playmode

PlayMode テストスクリプトのテンプレートを作成します。.cs ファイルを同期的に書き込み、コンパイル監視用の jobId を返します。test_create_editmode と同様に、Domain Reload と一時的な利用不可に関する注意があります。

パラメーター型必須デフォルト説明
testNamestringはい-作成するテストクラスの名前
folderstringいいえAssets/Tests/Runtimeテストスクリプトのフォルダーパス

戻り値: { success, status, path, testName, jobId, serverAvailability }

test_get_summary

すべての実行にわたるテストの集計サマリーを取得します。

パラメーターはありません。

戻り値: { success, totalRuns, completedRuns, totalPassed, totalFailed, totalSkipped, totalInconclusive, totalOther, allFailedTests }


最小限の例

import unity_skills, time

# Run tests and poll for result (async pattern required)
result = unity_skills.call_skill("test_run", testMode="EditMode")
job_id = result["jobId"]

# Poll until done (test_* skills are async)
for _ in range(30):
    status = unity_skills.call_skill("test_get_result", jobId=job_id)
    if status.get("status") == "Completed":
        print(f"Passed: {status['totalPassed']}, Failed: {status['totalFailed']}")
        break
    time.sleep(2)

正確なシグネチャ

正確な名前、パラメーター、デフォルト値、戻り値は、このファイルではなく GET /skills/schema または unity_skills.get_skill_schema() で定義されています。

コメント