Unite2017 参加しました その4
バグを殲滅!Unityにおける実践テスト手法
www.slideshare.net
Unity のテストツール
Unity 標準テスト環境あり
- Unity5.6 play mode
- Untiy5.5以前 edit mode
単体テスト
NUnit
- C#向けのテストツール
- Unityの古めのバージョンから支えていたが、Unity5.6からNUnit3系となったっぽい
TIPS
- MonoBehaiviorのオブジェクトはTearDownでnew する
- GUIで指定する各Objectは引数の差し替えで追加する。
- なので、依存関係がやばいとテストが大変
単体テスト環境の欠点
- MonoBehaiviorのライフサイクルはテストできない
- もしテストをするなら、MVPのPresenterのような形でライフサイクルときちんと切り出さなければならない?
- SingletonやStaticなものは、テストを再実行してもメモリ上に残る。(明示的にイニシャライザをしてあげる)
- Unity5.6未満だと、テストで作成されたgameObjectはテスト後でも残るので、明示的にデストラクタを呼ぶ必要がある。
結合テスト
方法
- キャラクタなどをnewして、Positionなどを整えることで結合テストが可能となる。
- Object間の関係をテストするのに使える。接触した場合の動作など。
- PlayModeであれば、ライフサイクルのテストも可能
MonobehaviourTest
- Unity5.6から使えるようになったテスト
- ライフサイクルをスタブする場合に便利かもしれない
- いくつかバグがすでに見つかっているので注意
その他 テストツール詳解
- UnityTestTools
- Integration Test Framework
- Unity UI Test Automation