コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】Unity Test Runner で実行できる汎用的なテストを 20 個以上まとめた「UniCommonTestRunner」を GitHub に公開しました

はじめに

Unity Test Runner で実行できる汎用的なテストを 20 個以上まとめた
「UniCommonTestRunner」を GitHub に公開しました

目次

バージョン

  • Unity 2018.3.7f1

使い方

f:id:baba_s:20190324140848p:plain

Unity メニューの「Window > General > Test Runner」を選択して表示される

f:id:baba_s:20190324140859p:plain

「Test Runner」ウィンドウからテストを実行することができます

f:id:baba_s:20190324150831p:plain

テストに失敗した場合は、該当するシーンやゲームオブジェクトの名前が出力されます

f:id:baba_s:20190324141014p:plain

Unity メニューの「Tools > UniCommonTestRunner」から
現在のシーンを対象にテストを実行することもできます

実行できるテストの種類

加速度センサーが無効になっているか

f:id:baba_s:20190324142201p:plain

加速度センサーを使用しないプロジェクトにおいて
加速度センサーが無効になっているかテストできます

Android 用のプラグインのプラットフォームが適切か

f:id:baba_s:20190324142206p:plain

「Plugins」フォルダ内の「Android」フォルダに含まれているプラグインの
対象プラットフォームに iOS が設定されていないかどうかテストできます

Animator Controller の Motion が null になっていないか

f:id:baba_s:20190324142213p:plain

Animator Controller の中のいずれかのステートの Motion が
null になっていないかどうかテストできます

Audio Listener が存在しないか

f:id:baba_s:20190324142219p:plain

CRI のようなサウンドミドルウェアを使用しているプロジェクトで
Audio Listener が使用されていないかどうかテストできます

Audio Listener が複数存在しないか

f:id:baba_s:20190324142225p:plain

Unity 標準のオーディオ機能を使用しているプロジェクトで
Audio Listener が1つのシーンに複数存在しないかどうかテストできます

2D のカメラのパラメータが統一されているか

f:id:baba_s:20190324142543p:plain

2D のプロジェクトにおいてすべてのシーンの
カメラのパラメータが統一されているかどうかテストできます

Canvas にカメラが設定されているか

f:id:baba_s:20190324142548p:plain

Render Mode が「Screen Space - Camera」や「World Space」になっている Canvas に
カメラが設定されているかどうかテストできます

透明な UI オブジェクトの
Cull Transparent Mesh がオンになっているか

f:id:baba_s:20190324142552p:plain

表示する必要のない透明な UI オブジェクトの Canvas Renderer の
Cull Transparent Mesh がオンになっているかどうかテストできます

Canvas Scaler のパラメータが統一されているか

f:id:baba_s:20190324142601p:plain

すべてのシーンの Canvas Scaler の解像度の設定が
統一されているかどうかテストできます

DisallowMultipleComponent 属性が適用されている
コンポーネントが複数アタッチされていないか

using UnityEngine;

[DisallowMultipleComponent]
public class Example : MonoBehaviour
{
}

DisallowMultipleComponent 属性が適用されているコンポーネントが
1つのゲームオブジェクトに複数アタッチされていないかどうかテストできます

EventSystem の Drag Threshold が統一されているか

f:id:baba_s:20190324143231p:plain

すべてのシーンの EventSystem の Drag Threshold の値が
統一されているかどうかテストできます
(シーンによって ScrollRect の操作性が相違していないか確認できます)

2D のシーンで Global Illumination が無効になっているか

f:id:baba_s:20190324143239p:plain

2D のシーンで Global Illumination の機能が
無効になっているかどうかテストできます

iOS 用のプラグインのプラットフォームが適切か

f:id:baba_s:20190324143245p:plain

「Plugins」フォルダ内の「iOS」フォルダに含まれているプラグインの
対象プラットフォームに Android が設定されていないかどうかテストできます

モバイル用のシェーダがマテリアルに設定されているか

f:id:baba_s:20190324143250p:plain

Unity 標準の軽量なモバイルシェーダに置き換えられるシェーダが
使用されているマテリアルが存在しないかどうかテストできます

Missing Prefab になっているオブジェクトが存在しないか

f:id:baba_s:20190324143258p:plain

生成元のプレハブが削除されたゲームオブジェクトが
存在しないかどうかテストできます

Missing になっている参照が存在しないか

f:id:baba_s:20190324143308p:plain

存在しないアセットやオブジェクトの参照が設定されている
パラメータが存在しないかどうかテストできます

Missing Script が存在しないか

f:id:baba_s:20190324143315p:plain

存在しないスクリプトや名前が正しくないスクリプトがアタッチされている
ゲームオブジェクトが存在しないかどうかテストできます

Odin の Required 属性が適用されている変数に
参照が設定されているか

using Sirenix.OdinInspector;
using UnityEngine;

public class Example : MonoBehaviour
{
    [Required] public GameObject go;
}

Odin の Required 属性が適用されている変数に
参照が設定されているかどうかテストできます

OnlyOneInScene 属性が適用されている
コンポーネントがシーンに 1つだけかどうか

using UnityEngine;

[OnlyOneInScene]
public class Example : MonoBehaviour
{
}

OnlyOneInScene 属性が適用されているコンポーネントが
シーンに1つしか存在しないかどうかテストできます

RectTransform の Position が整数になっているか

f:id:baba_s:20190324143711p:plain

RectTransform の Position に浮動小数点以下が設定されており
画像がボヤケて表示されていないかどうかテストできます

RectTransform の Scale が整数になっているか

RectTransform の Scale に浮動小数点以下が設定されており
画像がボヤケて表示されていないかどうかテストできます

f:id:baba_s:20190324143716p:plain

TextMeshProUGUI の Raycast Target がオフになっているか

f:id:baba_s:20190324143721p:plain

クリックできる必要のない TextMeshProUGUI オブジェクトの
Raycast Target がオフになっているかどうかテストできます

UI.Text の Raycast Target がオフになっているか

f:id:baba_s:20190324143728p:plain

クリックできる必要のない UI.Text オブジェクトの
Raycast Target がオフになっているかどうかテストできます

補足

「UniCommonTestRunner」は、あくまでも
汎用的に使えそうなテストをまとめただけのプロジェクトであり、
一部のテストはそのままだと使えない、意図した結果にならないことが想定されます

(例えば CRI を使用していることを前提としているテストが含まれています)

「UniCommonTestRunner」を使用する場合は
意図した結果にならないテストは修正や削除していただければと思います