なんとかするから、なんとかなる

エンジニア関係のことを書きます

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