環境
- Unity 2018.2.10.f1
- macOS 10.13.6
リポジトリ
こちら にコードがあります。
概要
Unity で MonoBehaviour を継承していない素の C# クラスをユニットテストした記録です。ハマりどころとしては、スクリプトのあるディレクトリで Assembly Definition を追加し、Tests ディレクトリの Tests Import Settings の References に追加する必要があるところでした。
テストディレクトリの追加
メニューバーの Window -> General -> Test Runner から、Create EditMode Test Assembly Folder を追加します。
Tests ディレクトリができるかと思います。
テスト対象スクリプト
適当なテスト対象のスクリプトを書きます。ここでは単純に 2 つの int の和を計算する静的メソッドを定義しておきました。Assets/Scripts/MyAdder.cs
として、
public static class MyAdder { public static int Add(int x, int y) { return x + y; } }
次に、 Create -> Assembly Definition で、適当な名前で定義を追加します。ここでは ScriptsAssembly
という名前で追加しておきます。
テストスクリプト
テストスクリプトの追加は、Create -> Testing -> Test C# Script で追加します。
Tests/Editor/MyAdderTests.cs
using UnityEngine; using UnityEngine.TestTools; using NUnit.Framework; using System.Collections; public class MyAdderTests { [Test] public void MyAdderTestSimple() { Assert.AreEqual(MyAdder.Add(1, 2), 3); } }
Tests/Tests というファイルのインスペクタに、定義したアセンブリを追加します。 こんなかんじになります。
テスト実行
Test Runner でテストを実行します。以下の画面のようになるはず。
分かってしまえば難しくないですが、どうもググる力が足りず少し時間をとられました。