Assembly Definitionを切る練習のためのプロジェクト
一般的な解説だけではなく、TestCodeやEditor拡張、ifdefがあるときの挙動はどうなっているのか、などをこのプロジェクトをasmdef対応しながら確認することを目指しています。
Assets/_MyProject/_Main/Scenes/demo.unityを開いてエディタ実行をします。
- Unity2018.4.6
git cloneしてください
qiita参照
- UtilityModuleを最初にasmdefで切る
- ビルドが通ることを確認する
- NetworkAccessModuleをasmdefで切って、1.をreferenceで設定する
- ビルドが通ることを確認する
- PlayerModuleをasmdefで切る
- ビルドが通らないことを確認する
- PlayerModuleのEditor以下をasmdefで切って、エディタのみに設定する
- ビルドが通ることを確認する
- TimerModuleをasmdefで切る
- ビルドが通ることを確認する
- IfdefCheckModuleをasmdefで切る
- ProjectSettingsの ScriptDefineSymbolsを設定して IfdefCheckModuleの挙動の変化を確認する(DEBUGとRELEASEとASMDEFTESTを定義しています)
ここまで試したら、PlayModeTestをNetworkAccessModuleに対して設定して、以下のようなHttpAccesTest.csというテストスクリプトを書いて、NetworkAccessModuleのasmdefをテストのreferenceに設定して、PlayModeTestが動くことを確認する。
public class HttpAccessTest
{
// A Test behaves as an ordinary method
[Test]
public void HttpAccessTestSimplePasses()
{
// Use the Assert class to test conditions
}
// A UnityTest behaves like a coroutine in Play Mode. In Edit Mode you can use
// `yield return null;` to skip a frame.
[UnityTest]
public IEnumerator HttpAccessTestWithEnumeratorPasses()
{
var go = Resources.Load<GameObject>("MainThreadDispacher");
GameObject.Instantiate(go);
yield return new WaitForSeconds(1f);
bool waiting = true;
GetHttpStatus.GetHttpStatusTargetUrl("https://httpbin.org", i =>
{
Assert.AreEqual(200, i);
waiting = false;
});
// Use the Assert class to test conditions.
// Use yield to skip a frame.
while (waiting)
{
yield return null;
}
Debug.Log("テスト通りました");
}
}
Step by stepが終わった状態のプロジェクトが feature/asmdef_finished ブランチにあります。
neon-izm
Apache License 2.0