【Unity】Unity Test Runnerを使ってみる(EditMode編)

目次

手順

1. Unity Test RunnerのWindowを表示させる

以下の手順でWindowを表示させます。

1
Window -> General -> Test Runner

手順1

2. Test用のファイルを生成する

Test Runner Windowから自動でテストに必要なファイルを生成します。

下の画像のように、一番上のタブのEditModeを選択(白くなります)して、中段にあるCreate EditMode Test Assembly Folderを押下してファイルを生成します。

手順2

Assetsフォルダにフォルダが生成されます。このときにつける名前はデフォルトで、Testsですが、名前は変更しても構いません。

Testsでフォルダを生成すると、Tests.asmdefというファイルが生成されます。(フォルダ名.asmdef)

.asmdefファイルとはなにか

3. テスト用スクリプトファイルの作成

Editorフォルダを作成し、その中でC# Test Scriptを作成します。

1
右クリック -> Create -> Testing -> C# Test Script

4. コードを記述する準備

EditModeでは、UnityTest属性(コルーチン)は使用できないので、テストはTest属性を使用してテストを記述します。

生成すると以下のようなコードになっていると思います。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using System.Collections;
using System.Collections.Generic;
using NUnit.Framework;
using UnityEngine;
using UnityEngine.TestTools;

namespace Tests
{
public class test
{
// A Test behaves as an ordinary method
[Test]
public void testSimplePasses()
{
// Use the Assert class to test conditions
}

// A UnityTest behaves like a coroutine in Play Mode. In Edit Mode you can use
// `yield return null;` to skip a frame.
[UnityTest]
public IEnumerator testWithEnumeratorPasses()
{
// Use the Assert class to test conditions.
// Use yield to skip a frame.
yield return null;
}
}
}

初期手順として、以下のようなことをしておくと、スムーズにテストを記述できるようになると思います。

  • EditModeでは使えないUnityTest属性を使用しているtestWithEnumeratorPasses()を消去します。
  • UnityAssertを使用できるように、usingを追加します。
  • 不要なコメントを消す
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System.Collections;
using System.Collections.Generic;
using NUnit.Framework;
using UnityEngine;
using UnityEngine.TestTools;
using Assert = UnityEngine.Assertions.Assert;

namespace Tests
{
public class test
{
[Test]
public void testSimplePasses()
{
}

}
}

5. テストを記述して実行する

今回は、テストのために、1+1が2になるかという簡単なテストを書いてみます。

以下のテストは、成功するテストです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System.Collections;
using System.Collections.Generic;
using NUnit.Framework;
using UnityEngine;
using UnityEngine.TestTools;
using Assert = UnityEngine.Assertions.Assert;

namespace Tests
{
public class test
{
[Test]
public void AddTest()
{
Assert.AreEqual(2,1+1);
}
}
}

Unityの画面に戻り、Test Runnerウィンドウ中断のRunAllを押下するとテストが実行されます。

手順5_1

矢印のトグルボタンを押して深く潜っていくと定義したAddTestクラスがあると思います。この部分をクリックすると詳細が表示されます。詳細情報はテストが失敗したときに役に立ちます。

以下の画像が先程のテストコードを失敗するように変更してテストした結果です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System.Collections;
using System.Collections.Generic;
using NUnit.Framework;
using UnityEngine;
using UnityEngine.TestTools;
using Assert = UnityEngine.Assertions.Assert;

namespace Tests
{
public class test
{
[Test]
public void AddTest()
{
Assert.AreEqual(0,1+1);
}
}
}

Expected 2 == 0となっています。この右側が成功した場合の値です。左側が計算した結果です。

手順5_2

Author

Daiki Iijima

Posted on

2021-06-15

Updated on

2024-04-17

Licensed under