Unity の TestRunner の実行の手順(使ったことが無い人向け)
ページ概要
unity の TestRunner の実行の手順をまとめています。
対象は、テストを使ったことが無くテストを触ってみたい人向けです。
詳細を把握したい方は公式ドキュメントを参照しましょう('ω')ノ docs.unity3d.com
Unity バージョン
unity 2018.1.0f2
Unity の TestRunner の概要
- テスト用の Attribute を付けた関数を実行する
- EditorMode と PlayMode の2種類がある
EditorMode = エディター上のみの同期テスト
PlayMode = 専用シーンを作って実行する、非同期のテスト - EditorMode と PlayMode はセットアップの手順が少し違います
EditorMode のセットアップ手順
- Unity の空プロジェクトを作成する
- Project Window 上で Editor フォルダを作成する
- 上部メニューの Window -> TestRunner をクリックして、Test Runner Window を表示させる
- Test Runner Window の EditMode をクリックしてモードをエディター用のテストに切り替える
- Project Window 上で Editor フォルダを選択
- Test Runner Window の Create Test Assembly Folder ボタンをクリック
Test 実行用のアセンブリファイルを生成する - Project Window 上で Editor フォルダに C# Script ファイルを作成する
- Visual Studio 等でテスト用のコードを記入する(コードは説明の後に記述しています)
- Test Runner Window の Run All をクリックする 動作を確認したプロジェクトのスクショ
PlayMode のセットアップ手順
- Unity の空プロジェクトを作成する
- 上部メニューの Window -> TestRunner をクリックして、Test Runner Window を表示させる
- Test Runner Window の PlayMode をクリックしてモードをエディター用のテストに切り替える
- Test Runner Window の Create Test Assembly Folder ボタンをクリック
Test 実行用のアセンブリファイルを生成する - ProjectWindow 上の 右上のメニュー?から、Enable playmode tests for all assemblies を選択
- ProjectWindow 上で Tests フォルダの下に Scripts フォルダを作成する
- Project Window 上で Tests フォルダに C# Script ファイルを作成する
- Visual Studio 等でテスト用のコードを記入する(コードは説明の後に記述しています)
- Test Runner Window の Run All をクリックする
動作を確認したプロジェクトのスクショ
注意事項
PlayMode は Tests アセンブリーのあるフォルダ以下の Script が対象となります。
違うフォルダにScript を作ってテストコードを書いた場合、UnityEngine.TestTools が未定義になります。
使用したテスト用のコード
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.TestTools; using NUnit.Framework; /// <summary> /// 動作確認用のクラス /// </summary> public class TestRunnerMain { /// <summary> /// 関数のテスト /// </summary> [Test] public void EditModeTest() { // エラーにならないので、コンソールには何も表示されない UnityEngine.Assertions.Assert.AreEqual( 0, 0, "関数のテスト" ); // コメントを外すとエラーがコンソールに出力される。 //UnityEngine.Assertions.Assert.AreEqual( 0, 1, "関数のテスト。エラー" ); } /// <summary> /// コルーチンのテスト /// </summary> /// <returns></returns> [UnityTest] public IEnumerator CoPlayModeTest() { UnityEngine.Assertions.Assert.AreEqual( 0, 0, "コルーチンのテスト" ); //UnityEngine.Assertions.Assert.AreEqual( 0, 1, "コルーチンのテスト。エラー" ); yield return null; } }