Unity Test Runnerを使うとUnity上でテストを記述することができます。
この記事ではUnity Test Runnerの使い方を各記事へのリンクの形でまとめました。
- インストール~基本的な使い方まとめ
- テストの前後処理を書く
- 例外やエラーが出力されることをテストする
- コマンドラインからテストを実行する
- 浮動小数点数をテストする
- 非同期メソッドをテストする
- internalなクラスのテストを書く
- その他の小技色々まとめ
- 関連
インストール~基本的な使い方まとめ
まずUnity Test Runnerをインストールして初期セットアップをする方法、
基本的なテストを書くまでの情報は以下の記事にまとめています。
他の記事の前提知識にもなっていますので、最初にこの記事をお読みいただくことをお勧めします。
テストの前後処理を書く
テストを書く際には、テスト用のアセットを作成したり関連するクラスを初期化したりといった前後処理が必要になります。
Unity Test Runnerは.NET Framework用のテストツールであるNUnitのインテグレーションになっているため、
NUnitのものに加えてUnityのための前後処理も追加されており複雑になっているので以下の記事にまとめています。
例外やエラーが出力されることをテストする
通常、テストは例外が発生したら失敗扱いになります。
またUnityの場合はDebug.LogError()
などによる出力もテスト失敗の対象となります。
しかしテストケースによっては「例外が正常にスローされること」や「エラーログが正しく出力されること」をテストする必要があります。
このようなテストケースのハンドリング方法を以下の記事にまとめています。
コマンドラインからテストを実行する
Unityのテストツールはコマンドラインから実行することも可能です。
またテストを自動化するためにはコマンドライン実行し、結果を受け取るまでのフローを理解する必要があります。
以下の記事ではこのあたりの知識についてまとめています。
浮動小数点数をテストする
浮動小数点の計算には誤差が存在するので、テストをする上でどこまでの誤差を許容するか考慮する必要があります。
またUnityには内部的に浮動小数点数を3つもつVector3などの構造体についても考える必要があります。
Unityでは浮動小数点数のテスト方法について便利なクラスが用意されているので、以下ではそれを紹介しています。
非同期メソッドをテストする
UnityのTest Runnerは内部的に使っているNUnitのバージョンが(現時点では)古く、
非同期メソッドのテスト方法については少しコツがあります。
以下の記事ではこの件についてまとめています。
internalなクラスのテストを書く
C#にはinternalという修飾子が存在します。
これを付けたクラスは他のアセンブリから参照することができません。
しかしテストは別アセンブリとして定義されるため、internalなクラスにアクセスしたいケースがあります。
このようなケースの解決策を以下の記事にまとめています。
その他の小技色々まとめ
その他、上記の記事で紹介しきれなかった細かい項目については以下の記事にまとめています。
内容としては以下のような項目が記載されています。
- 複数の入力値をテストする
- 特定プラットフォームで実行したときだけテストする
- MonoBehaviourを使ったテストを書く
- メモリアロケーションがあるかどうかテストする
- Edit Modeテスト中にPlayモードに入れる
- スクリプトをコンパイルしなおす
- テスト開始・終了時のコールバックを得る
- テスト用のPrimitiveのGameObjectを作る
個々の情報量がそこまで多くないので一つの記事にまとめてしまいましたが、
Test Runnerを使う上で重要な知識も含まれているので一読することをお勧めいたします。