unity-playmode-test

Installation
SKILL.md

Unity Playmode Test (UI 操作)

PREREQUISITE: unity-shared (Relay Server 経由で Unity Editor 起動中、-i <instance> 必須)

u uitree click で外形操作する unity-ui とは目的が違う。本スキルは NUnit [UnityTest] クラスを書いて回帰テストとして main に commit する 部分を扱う。CI / u tests run play で再実行できる形に落とし込むことが目的。

ワークフロー

  1. テスト対象の決定 — どの MonoBehaviour / どのシーン / どの element / 何が成功条件か。 Pre-flight A (シーン側): 指定シーンに target MonoBehaviour が wire されているか u -i <project> uitree dump で確認 (空シーン / Prefab だけのシーンに対してテストを書いて SetUp で FindAnyObjectByType が null を返す事故を防ぐ)。 Pre-flight B (production の到達範囲側): 観測したい element が production の screen-extract 後の _root 配下にあるか を確認する。ScreenConfigRuntime.ExtractScreen のような切り出しを通すと、UXML 上は存在しても _root.Q(...) で null を返す要素がある (sibling frame / 状態別 frame / Off-screen 等)。
    • *_ScreenConfig.asset (ScriptableObject) の defaultElementName / parentElementName を直接読んで、production が「Empty / Loading 等」をどう extract しているかを把握する
    • 観測対象が extract 範囲外の場合、テストの前に production 側の wiring を直す か、本スキル末尾「Contract test として残す」パターンを使う
  2. 要素名の命名規則確認_root.Q<T>("name") の name は UXML 上の生 name 属性 (例: "Favorite Empty"、空白あり)。一方 Source Generator が生成する UI.X プロパティ名は PascalCase 化された identifier (UI.FavoriteEmpty)。Q に渡す文字列を間違えないように、UXML の name を正として写す (UI.X の名前から推測しない)。詳細は採用先 docs/unity/figma-naming-conventions.md 参照。
  3. asmdef 配置assets/asmdef.template.jsonTests/PlayMode/ に置く
  4. テストクラス作成assets/PlaymodeTest.template.cs を雛形にして書く
  5. コンパイル確認u -i <project> refreshu -i <project> stateisCompiling=False
  6. 実行u -i <project> tests run play -a <Assembly>
  7. fail したら references/troubleshooting.md を読む
Installs
1
Repository
bigdra50/skills
First Seen
Jul 5, 2026
unity-playmode-test — bigdra50/skills