まいにち、いっぽ

物事を理解するための出力装置

Unity の TestRunner の実行の手順(使ったことが無い人向け)

ページ概要

unity の TestRunner の実行の手順をまとめています。
対象は、テストを使ったことが無くテストを触ってみたい人向けです。

詳細を把握したい方は公式ドキュメントを参照しましょう('ω')ノ docs.unity3d.com

Unity バージョン

unity 2018.1.0f2

Unity の TestRunner の概要

  • テスト用の Attribute を付けた関数を実行する
  • EditorMode と PlayMode の2種類がある
    EditorMode = エディター上のみの同期テスト
    PlayMode = 専用シーンを作って実行する、非同期のテスト
  • EditorMode と PlayMode はセットアップの手順が少し違います

EditorMode のセットアップ手順

  1. Unity の空プロジェクトを作成する
  2. Project Window 上で Editor フォルダを作成する
  3. 上部メニューの Window -> TestRunner をクリックして、Test Runner Window を表示させる
  4. Test Runner Window の EditMode をクリックしてモードをエディター用のテストに切り替える
  5. Project Window 上で Editor フォルダを選択
  6. Test Runner Window の Create Test Assembly Folder ボタンをクリック
    Test 実行用のアセンブリファイルを生成する
  7. Project Window 上で Editor フォルダに C# Script ファイルを作成する
  8. Visual Studio 等でテスト用のコードを記入する(コードは説明の後に記述しています)
  9. Test Runner Window の Run All をクリックする 動作を確認したプロジェクトのスクショ f:id:syuuki_kisaragi:20180801182026j:plain

PlayMode のセットアップ手順

  1. Unity の空プロジェクトを作成する
  2. 上部メニューの Window -> TestRunner をクリックして、Test Runner Window を表示させる
  3. Test Runner Window の PlayMode をクリックしてモードをエディター用のテストに切り替える
  4. Test Runner Window の Create Test Assembly Folder ボタンをクリック
    Test 実行用のアセンブリファイルを生成する
  5. ProjectWindow 上の 右上のメニュー?から、Enable playmode tests for all assemblies を選択f:id:syuuki_kisaragi:20180801181940j:plain
  6. ProjectWindow 上で Tests フォルダの下に Scripts フォルダを作成する
  7. Project Window 上で Tests フォルダに C# Script ファイルを作成する
  8. Visual Studio 等でテスト用のコードを記入する(コードは説明の後に記述しています)
  9. Test Runner Window の Run All をクリックする

動作を確認したプロジェクトのスクショ f:id:syuuki_kisaragi:20180801183222j:plain

注意事項

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;
    }
}