C#でコードを書くにあたって、UnitTestができたほうが安心できるので調べた。
UnitTestの方法
- UnityEditorに組み込まれたUnitTest Runnerが使用できる
- NUnit相当の機能が使える
テストプロジェクトに癖がある
Create > Testing
でTestsディレクトリを作成可能- 作成されたテストプロジェクトは、UnityProject(ゲーム)側のdllが参照されない
- ゲームコードのUnitTestができないのでは?
- 公式動画を見ると、アセット内に直接UnitTestコードを追加していた
- 成果物バイナリにUnitTestが含まれてしまうのでは?
- 最適化で外される?
- 試しに
new HogeTest()
をゲームコードから呼び出したが、リリースビルドでも動作した - CIなりなんなりでどうにもできるとはいえ、この構成は正しいのか?と不安になる
- C#の仕様とも比べなければならない
- 成果物バイナリにUnitTestが含まれてしまうのでは?
非同期のテストも記述できる
IEnumerator
を返却することで非同期(Unity Coroutine)のテストが行える- その場合のAttributeは
[UnityTest]
Runtime(Editor外)でもテストが実行できる
- Windowsで確認
- Monoに限定されるだろうが、実ビルドしてEditor外でUnitTestが行える
- ある程度安心はできそう
Rider内でテストが失敗する
- 原因が不明
- Unity Editorでは成功しているが、Riderは実行直前に例外で落ちる