【Unity】Unity Test Runner(Test Framework)の使い方を総まとめ - インストールから自動化まで

Unity Test Runnerを使うとUnity上でテストを記述することができます。
この記事ではUnity Test Runnerの使い方を各記事へのリンクの形でまとめました。

インストール~基本的な使い方まとめ

まずUnity Test Runnerをインストールして初期セットアップをする方法、
基本的なテストを書くまでの情報は以下の記事にまとめています。

light11.hatenadiary.com

他の記事の前提知識にもなっていますので、最初にこの記事をお読みいただくことをお勧めします。

テストの前後処理を書く

テストを書く際には、テスト用のアセットを作成したり関連するクラスを初期化したりといった前後処理が必要になります。

Unity Test Runnerは.NET Framework用のテストツールであるNUnitのインテグレーションになっているため、
NUnitのものに加えてUnityのための前後処理も追加されており複雑になっているので以下の記事にまとめています。

light11.hatenadiary.com

例外やエラーが出力されることをテストする

通常、テストは例外が発生したら失敗扱いになります。
またUnityの場合はDebug.LogError()などによる出力もテスト失敗の対象となります。

しかしテストケースによっては「例外が正常にスローされること」や「エラーログが正しく出力されること」をテストする必要があります。
このようなテストケースのハンドリング方法を以下の記事にまとめています。

light11.hatenadiary.com

コマンドラインからテストを実行する

Unityのテストツールはコマンドラインから実行することも可能です。
またテストを自動化するためにはコマンドライン実行し、結果を受け取るまでのフローを理解する必要があります。

以下の記事ではこのあたりの知識についてまとめています。

light11.hatenadiary.com

浮動小数点数をテストする

浮動小数点の計算には誤差が存在するので、テストをする上でどこまでの誤差を許容するか考慮する必要があります。
またUnityには内部的に浮動小数点数を3つもつVector3などの構造体についても考える必要があります。

Unityでは浮動小数点数のテスト方法について便利なクラスが用意されているので、以下ではそれを紹介しています。

light11.hatenadiary.com

非同期メソッドをテストする

UnityのTest Runnerは内部的に使っているNUnitのバージョンが(現時点では)古く、
非同期メソッドのテスト方法については少しコツがあります。

以下の記事ではこの件についてまとめています。

light11.hatenadiary.com

internalなクラスのテストを書く

C#にはinternalという修飾子が存在します。
これを付けたクラスは他のアセンブリから参照することができません。
しかしテストは別アセンブリとして定義されるため、internalなクラスにアクセスしたいケースがあります。
このようなケースの解決策を以下の記事にまとめています。

light11.hatenadiary.com

その他の小技色々まとめ

その他、上記の記事で紹介しきれなかった細かい項目については以下の記事にまとめています。

light11.hatenadiary.com

内容としては以下のような項目が記載されています。

  • 複数の入力値をテストする
  • 特定プラットフォームで実行したときだけテストする
  • MonoBehaviourを使ったテストを書く
  • メモリアロケーションがあるかどうかテストする
  • Edit Modeテスト中にPlayモードに入れる
  • スクリプトコンパイルしなおす
  • テスト開始・終了時のコールバックを得る
  • テスト用のPrimitiveのGameObjectを作る

個々の情報量がそこまで多くないので一つの記事にまとめてしまいましたが、
Test Runnerを使う上で重要な知識も含まれているので一読することをお勧めいたします。

関連

light11.hatenadiary.com

light11.hatenadiary.com

light11.hatenadiary.com

light11.hatenadiary.com

light11.hatenadiary.com

light11.hatenadiary.com

light11.hatenadiary.com