Unity Test Runner 初学者向けチュートリアル
目次
1. はじめに
- 目的:Unity Test Runner を使って、自動化されたテスト(単体テスト/統合テスト)を作成・実行し、品質を高める基本的な流れを理解する
- 対象:Unity プロジェクトをある程度触ったことがあり、C# スクリプトを自分で書いたことがある方
- 前提:Unity 6(Test Runner 付き)、基本的な C# 知識、Unity エディタの操作経験
2. Unity Test Runner とは?
- EditMode テスト
- エディタ上でのみ実行
- シーンをロードせず、純粋な C# コードをテスト
- PlayMode テスト
- エディタの Play モード中に実行
- 実際のシーンや GameObject を生成してテスト可能
3. テスト用アセンブリの準備
- テストフォルダの作成
Assets/
Tests/
EditMode/
PlayMode/
- アセンブリ定義ファイル(.asmdef)の追加
- Assets/Tests/EditMode/Tests.EditMode.asmdef
- Assets/Tests/PlayMode/Tests.PlayMode.asmdef→ 該当フォルダを右クリック → Create → Assembly Definition で作成
- 依存関係の設定
- 各 asmdef の Assembly Definition References に以下を追加:
- UnityEngine.TestRunner
- nunit.framework
- 各 asmdef の Assembly Definition References に以下を追加:
4. 最初のテストを作る
4.1 EditMode テスト
- Assets/Tests/EditMode フォルダで右クリック → Create → C# Test Script → MyFirstEditModeTest
- 以下コードを入力し、すべての Assert を Assert.That スタイルに統一
using NUnit.Framework;
namespace Tests.EditMode
{
public class MyFirstEditModeTest
{
[Test]
public void SamplePassingTest()
{
// Arrange
int a = 1, b = 2;
// Act
int sum = a + b;
// Assert
Assert.That(sum, Is.EqualTo(3), "1 + 2 は 3 になるはずです");
}
[Test]
public void SampleFailingTest()
{
// このテストは意図的に失敗させます
Assert.That(false, Is.True, "このテストは意図的に失敗させます");
}
}
}
4.2 PlayMode テスト
- Assets/Tests/PlayMode フォルダで右クリック → Create → C# Test Script → MyFirstPlayModeTest
- 以下コードを入力
// Assets/Tests/PlayMode/SamplePlayModeTest.cs
using UnityEngine;
using UnityEngine.TestTools;
using NUnit.Framework;
using System.Collections;
namespace Tests.EditMode
{
public class SampleEditModeTest
{
[UnityTest]
public IEnumerator SamplePassingTest()
{
// Arrange
int a = 1, b = 2;
yield return null; // 一フレーム待機
// Act
int sum = a + b;
yield return null;
// Assert
Assert.That(sum, Is.EqualTo(3), "1 + 2 は 3 になるはずです");
}
[UnityTest]
public IEnumerator SampleFailingTest()
{
yield return null; // 一フレーム待機
// このテストは意図的に失敗させます
Assert.That(false, Is.True, "このテストは意図的に失敗させます");
}
}
}
5. テストの実行
- メニューから Window → General → Test Runner を開く
- EditMode/PlayMode タブを選択
- Run All または個別に Run Selected をクリック
- ✅ 成功/❌ 失敗が表示。失敗ログはダブルクリックで該当コードにジャンプ可能
6. よくある初学者のつまずきポイント
ポイント | 対策 |
---|---|
asmdef の参照漏れ | nunit.framework を忘れず追加 |
[Test] と [UnityTest] の混同 | EditMode は [Test]、PlayMode は [UnityTest] を使用 |
Assert.That の書き方に慣れない | Assert.That(actual, Is.EqualTo(expected)) の形式を覚える |
GameObject の生成・破棄タイミング | yield return null; で必ず一フレーム待機 |
テスト実行時のエディタクラッシュ | 実物のシーンは避け、プリミティブやモックを使う |
7. 次のステップ
- TDD(テスト駆動開発):テストを書いてから実装を追加
- Mock フレームワーク:NSubstitute 等で外部依存を切り離す
- CI への組み込み:GitHub Actions 等にテスト実行を自動化
Unity Test Runner を活用して、品質の高いプロジェクト運営を目指しましょう!
ディスカッション
コメント一覧
まだ、コメントがありません