unity-test について
Unity プロジェクトのテスト管理スキルです。EditMode と PlayMode のテストを検出・実行して結果を取得でき、テストスクリプトのテンプレートも作成します。
主な機能
- 01テストとカテゴリの検出・一覧表示
- 02全件または指定テストの実行
- 03非同期テスト結果の取得
- 04最新結果と集計結果の確認
- 05EditMode と PlayMode のテンプレート作成
活用シーン
- 01EditMode または PlayMode テストの実行
- 02クラス名やメソッド名によるテスト検索
- 03非同期テストジョブの結果確認
- 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_nameMayTriggerReload = 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 が検出を開始します。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| testMode | string | いいえ | EditMode | EditMode または PlayMode |
戻り値: { success, status, jobId, kind, testMode, message }
test_discover_get_result
非同期の Unity Test Runner 検出ジョブの結果を取得します。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| jobId | string | はい | - | 検出ジョブ ID |
| limit | int | いいえ | 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
クラス名またはメソッド名を指定してテストを実行します。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| testName | string | はい | - | 実行するテストのクラス名またはメソッド名 |
| testMode | string | いいえ | EditMode | EditMode または 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 と同じです。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| testMode | string | いいえ | EditMode | EditMode または PlayMode |
戻り値: { success, count, categories, pendingDiscovery, discoveryJobId, discoveryStatus }
test_smoke_skills
登録済みスキル全体で再利用可能なスモークテストを実行します。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| category | string | いいえ | - | 1 つのスキルカテゴリのみをテストします(SkillCategory の名前。未知の名前を指定すると、すべてのスキルをテストせずに拒否されます) |
| nameContains | string | いいえ | - | 部分一致する名前でスキルを絞り込みます |
| excludeNamesCsv | string | いいえ | - | 除外するスキル名をカンマ区切りで指定します |
| executeReadOnly | bool | いいえ | true | 安全な読み取り専用スキルを直接実行します |
| includeMutating | bool | いいえ | true | dryRun スモークテストを通じて変更を伴うスキルを含めます |
| limit | int | いいえ | 0 | 検査するスキルの最大数。0 はすべてを意味します |
戻り値: { success, totalSkills, executedCount, dryRunCount, failureCount, results }
test_create_editmode
EditMode テストスクリプトのテンプレートを作成します。.cs ファイルを同期的に書き込み、コンパイル監視用の jobId を返します。スクリプトの作成によって Domain Reload が発生するため、サーバーが一時的に利用できなくなる場合があります。serverAvailability に一時的な利用不可を示す情報が含まれます。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| testName | string | はい | - | 作成するテストクラスの名前 |
| folder | string | いいえ | Assets/Tests/Editor | テストスクリプトのフォルダーパス |
戻り値: { success, status, path, testName, jobId, serverAvailability }
test_create_playmode
PlayMode テストスクリプトのテンプレートを作成します。.cs ファイルを同期的に書き込み、コンパイル監視用の jobId を返します。test_create_editmode と同様に、Domain Reload と一時的な利用不可に関する注意があります。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| testName | string | はい | - | 作成するテストクラスの名前 |
| folder | string | いいえ | 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() で定義されています。