次プロジェクトへ向けて、社外への開発会社への要件定義や、その要件を満たしているかどうかの検収方法について考えていた時に、 テストを行った結果の可否のみがシンプルだという答えになり、 Unity上でのテストを行う手段の一つとして、「TestRunner」という機能があるようなので、 テストしてみた。
今回は、実際に状態の比較を行ってみる。
まず、前提。
1.表示される内容
2.プロジェクトの状態 このLogoImageが、表示されるスプラッシュ画像である。
Splashという物が、設定しているSpriteである。
〇テスト内容
ここでの望まれるべき状態は
・スナップショット
シーン開始時(厳密に、開始0フレ目とかでなくてもいいと思う)
・想定される状態
LogoImageのSourceImageが、
Assets/Resources/Image/Splash/Splashである事。
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] 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; } } }
〇実行結果 成功なので、想定どおり。
〇試しに、LogoImageをNULLにしてみる 失敗なので、少なくても想定している画像は出ていない事がわかる。
〇試しに、LogoImageをSprite2にしてみる
失敗なので、少なくても想定している画像は出ていない事がわかる。