困った時の自分用メモ

読んだ本を考察してメモったり、自分でいじった物の感想をメモったりする場。週1更新を目指します。

Unityの話~Test Runnerの使い方メモ5:テスト実行順序の制御方法~

次プロジェクトへ向けて、社外への開発会社への要件定義や、その要件を満たしているかどうかの検収方法について考えていた時に、 テストを行った結果の可否のみがシンプルだという答えになり、 Unity上でのテストを行う手段の一つとして、「TestRunner」という機能があるようなので、 テストしてみた。

今回は、テストの実行順の話

スクリプト

using System.Collections;
using System.Collections.Generic;
using NUnit.Framework;
using UnityEngine;
using UnityEngine.TestTools;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

namespace Tests
{
    public class TestRunnerTest
    {
        //private Sprite SplashLogoSprite = null;

        //// クラス内の最初のテストが実行される前に一度だけ実行される
        //[OneTimeSetUp]
        //public void OneTimeSetUp()
        //{
        // // 想定される比較用画像の取得
        // SplashLogoSprite = Resources.Load<Sprite>("Image/Splash/Splash");
        //}

        //// スプラッシュの画像が想定している物かどうか
        //[UnityTest, Order(2)]
        //public IEnumerator SplashLogoTest()
        //{
        // // オブジェクトを取得する為に、オブジェクトが存在するシーンになるまで待つ
        // while (SceneManager.GetSceneByName("Splash") == null) {
        //        yield return null;
        // }

        //    // シーン中のオブジェクト取得
        // GameObject splashImageObj = GameObject.Find("LogoImage");
        // Image image = splashImageObj.GetComponent<Image>();

        //    // spriteの中身を比較
        //    Assert.IsTrue(image.sprite == SplashLogoSprite);

        //    yield return null;
        //}
        
        // Orderの小さい順に実行される
        // なのて、Test2→Test3→Test1の順にログが表示される
        [UnityTest, Order(3)]
        public IEnumerator Test1()
        {
            Debug.Log("Test1");
            yield return null;
        }
        
        [UnityTest, Order(1)]
        public IEnumerator Test2()
        {
            Debug.Log("Test2");
            yield return null;
        }

        [UnityTest, Order(2)]
        public IEnumerator Test3()
        {
            Debug.Log("Test3");
            yield return null;
        }
    }
}

〇実行結果 Test2、Test3、Test1の順に実行される。