eaglesakuraの技術ブログ

技術的な話題とか、メモとか。

Unity学習の整理 UnityEditorでC#のUnitTest

C#でコードを書くにあたって、UnitTestができたほうが安心できるので調べた。

UnitTestの方法

  • UnityEditorに組み込まれたUnitTest Runnerが使用できる
  • NUnit相当の機能が使える

テストプロジェクトに癖がある

  • Create > Testing でTestsディレクトリを作成可能
  • 作成されたテストプロジェクトは、UnityProject(ゲーム)側のdllが参照されない
    • ゲームコードのUnitTestができないのでは?
  • 公式動画を見ると、アセット内に直接UnitTestコードを追加していた
    • 成果物バイナリにUnitTestが含まれてしまうのでは?
      • 最適化で外される?
      • 試しに new HogeTest() をゲームコードから呼び出したが、リリースビルドでも動作した
      • CIなりなんなりでどうにもできるとはいえ、この構成は正しいのか?と不安になる
    • C#の仕様とも比べなければならない

非同期のテストも記述できる

  • IEnumerator を返却することで非同期(Unity Coroutine)のテストが行える
  • その場合のAttributeは [UnityTest]

Runtime(Editor外)でもテストが実行できる

  • Windowsで確認
  • Monoに限定されるだろうが、実ビルドしてEditor外でUnitTestが行える
    • ある程度安心はできそう

Rider内でテストが失敗する

  • 原因が不明
  • Unity Editorでは成功しているが、Riderは実行直前に例外で落ちる