このページで学ぶ内容:Unity Test Framework(UTF)を使用してプロジェクトの QA を実行する方法についてのヒント。UTF は品質保証のために最も重要なツールの 1 つです。エディターとサポートされているプラットフォームの両方で自動化されたテストを実行できます。また、Unity ユーザーなら誰でもご利用いただけます。
新しい Test Runner API は、UTF により優れた柔軟性と拡張性をもたらし、テストに関わるほとんどのニーズを満たします。Unity パッケージマネージャーから入手できるため、バグ修正プログラムや新しい更新プログラムを迅速に届けることができます。これは、UTF のソースコードにローカルでアクセスできることも意味します。ソースコードを確認し、デバッグ時にステップ実行して、それを変更できます。
全体像を確認するには、Unity のツール/テスト開発者である Richard Fine と Christian Warnecke による Unite Copenhagen の UTF に関するセッションをご覧ください。

Unity Test Framework を使ってみよう
If you are new to the Unity Test Framework (UTF), read the documentation for an introduction. In brief, the UTF enables Unity users to test their code in both Edit Mode and Play Mode, and also on target platforms such as Standalone, Android, iOS, and others.
UTF uses a Unity integration of the NUnit library, which is an open-source unit testing library for .Net languages. For more information about NUnit, see the official NUnit website and the NUnit documentation on GitHub.
You might also find these blog posts informative:
Performance benchmarking in Unity: How to get started
Testing test-driven development with the Unity Test Runner
Another related solution to learn about is Backtrace, an error management platform that enables you to capture crashes and exceptions and fix them quickly. Watch this Unite Now session for an in-depth introduction.
Test Runner API の概要
Test Runner API(以下の API)を使用して、あらゆるスクリプトからテストをプログラムで実行できます。編集モードか再生モード、またはその両方で実行されるテストの一覧を、実行することなく取得できます。登録/登録解除のコールバックを、各テストの開始と終了およびテストサイクル内の各レベル(全テストアセンブリ、個々のテストフィクスチャごと、テストクラスおよびテストごと)に接続できます。
各テストの開始時点で、これから実行するテストルートに関する情報が得られます。テストが終了すると、テスト結果が表示されます。
UTF を Unity エディターの再生モードで実行するのに加えて、新しいカスタマイズポイントによりターゲットデバイス上で実行できます。これはプレイヤーをビルドする前に呼び出されます。プレイヤービルドオプションを変更して、たとえばテストの実行設定を変更したり、ビルド場所を指定したりできます。
ビルドと実行の分割
ローカルマシンに接続されていないターゲットデバイスでテストを実行する必要があるときは、ビルドプロセスと実行プロセスを分割すると便利です。たとえば、ターゲットデバイスがクラウド内にある(またはクラウド内の複数のデバイスである)場合などがあります。
これを実行するには、まずプレイヤービルドのテストプロセス自体をカスタマイズする必要があります。その方法を紹介します。
- プレイヤーがビルドされてすぐにテストが起動して実行されないように、AutoRun を無効にします。
- (デフォルトで保存される)システムの一時フォルダーではなく、既知の場所に保存します。
次に、(コールバックインターフェースを使用して)プレイヤー側にカスタム結果レポートを追加し、すべての結果をキャプチャーして XML ファイルなどプロジェクトに対応する形式で保存します。
ビルドと実行を分割する方法については、次のコード例を参考にしてください。Unite セッションでは、Richard Fine がこのアプリケーションの両方の部分(ビルドと結果レポート)のコードを順を追って説明しています(6:28 から)。
ビルドと実行の分割:ビルド
ビルド:
ビルドと実行の分割:実行の結果を保存する
実行:
ビルドの前にテストを実行する
ビルドの前にテストを実行することはやり辛いと感じるかもしれません。ビルドプロセスではテストがコールバックから実行されることを必要としているため、エンジンの更新ループをくみ上げる機会がないからです。ただし、実際のビルドに時間をかける(プロジェクトによっては何分もかかることがある)前に、基本機能が機能していることを確認できることが利点です。
このアプリケーションは、他の種類のビルドの前処理を実装する場合と同様に、IPreprocessBuildWithReport インターフェースを使用して実装できます。結果を取得するには、いつものようにコールバックを登録します。
ビルドの途中で再生モードに入ることはできないため、Test Runner API を使用して編集モードで特定のテストを実行できます。これらのテストは、ビルド前検証テストのカテゴリなど、カテゴリ別にフィルタリングすることで選択できます。これらのテストは同期的に実行できます。
テストが終了したら、テスト結果を確認します。どこかでエラーが発生した場合は、BuildFailed 例外をスローすることでビルドプロセスを中止できます。
このアプリケーションは、ResultCollector とプリプロセッサーの 2 つの部分に分けられます。このことについては、Richard によるこちらの講演にて詳細を説明しています(15:20 から)。
Christian と Richard による Test Runner API に関するライブデモをご覧ください。セッション全体からさらに多くの QA に関するヒントが得られます。