iizukak の雑記

忘れる前に書いとこう

Test Runner で MonoBehaviour を継承していないクラスをテストする

環境

  • 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 を追加します。

f:id:iizukak:20180929134708p:plain

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 という名前で追加しておきます。

f:id:iizukak:20180929220258p:plain

テストスクリプト

テストスクリプトの追加は、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 というファイルのインスペクタに、定義したアセンブリを追加します。 こんなかんじになります。

f:id:iizukak:20180929215604p:plain

テスト実行

Test Runner でテストを実行します。以下の画面のようになるはず。

f:id:iizukak:20180929215734p:plain

分かってしまえば難しくないですが、どうもググる力が足りず少し時間をとられました。