Unity Test Runner におけるアセンブリ定義の設定と運用方法

概要

Unity Test Runnerを使用してプロジェクトのテストを実行するには、コードを適切に分離し、アセンブリ定義ファイル(*.asmdef)を用いた管理が必要です。この資料では、アセンブリ定義ファイルを用いたテスト環境の構築手順を解説します。

この資料は次のリンクの解説になります


目的

  • テストコードと本体コードの分離によるプロジェクトのモジュール化。
  • 依存関係の明確化とビルド時間の最適化。
  • Unity Test Runnerでのエラー防止と運用効率化。

アセンブリ定義ファイルの基礎知識

アセンブリ定義ファイルとは?

  • Unityのアセンブリ定義ファイル(*.asmdef)は、スクリプトのビルドをモジュール単位に分ける仕組みです。
  • 使用することで、ビルド速度が向上し、依存関係が明確化されます。

基本ルール

  1. 各フォルダに対応するアセンブリ定義を作成。
  2. アセンブリ間の参照は明示的に設定。
  3. 循環参照は禁止(参照は一方向のみ)。

アセンブリ定義の構成例

以下の構成を基に、プロジェクトを設計します。

フォルダ構成

Assets/
├── Scripts/
│   ├── Calculator.cs
│   ├── CalculatorAsm.asmdef
├── Tests/
│   ├── EditModeTests/
│   │   ├── CalculatorTests.cs
│   │   └── EditModeAsm.asmdef
│   └── PlayModeTests/
│       ├── PlayModeTest.cs
│       └── PlayModeAsm.asmdef

具体的な設定方法

1. テスト対象コードのアセンブリ(CalculatorAsm)

  1. 場所:
    • Assets/Scripts/CalculatorAsm.asmdef
  2. 設定内容:
    • 必要なUnityライブラリ(例: UnityEngine.CoreModule)を参照。
    • 他のアセンブリ(例: テスト用アセンブリ)を参照しない
    • プラットフォーム:
      • 「Any Platform」を有効化。

2. テスト用アセンブリ(EditModeAsm)

  1. 場所:
    • Assets/Tests/EditModeTests/EditModeAsm.asmdef
  2. 設定内容:
    • 依存関係:
      • CalculatorAsm を参照。
      • UnityEngine.TestRunnernunit.framework.dll を参照。
    • プラットフォームを「Editor」に限定。

3. PlayMode用のアセンブリ(PlayModeAsm)

  1. 場所:
    • Assets/Tests/PlayModeTests/PlayModeAsm.asmdef
  2. 設定内容:
    • 依存関係:
      • テスト対象のアセンブリ(例: CalculatorAsm)。
      • テストライブラリ(UnityEngine.TestRunner)。
    • プラットフォームを「Any Platform」に設定。

アセンブリ間の参照設定

参照の方向性

  • CalculatorAsm(テスト対象アセンブリ):
  • 他のアセンブリを参照しない。
  • EditModeAsm(テスト用アセンブリ):
  • CalculatorAsm を参照。
  • テスト関連ライブラリを参照。

注意点

  • 循環参照を回避:
    • CalculatorAsmEditModeAsm を参照しないようにする。
  • 依存関係の確認:
    • アセンブリ定義ファイルを設定後、Unityエディターの再インポートを実行し、参照エラーがないか確認。

Test Runnerの運用

  1. EditModeテストの実行手順:
    • Test Runnerウィンドウを開き(Window > General > Test Runner)。
    • EditModeタブを選択。
      • テストコードが表示されることを確認し、実行。
  2. PlayModeテストの実行手順:
    • Test RunnerウィンドウでPlayModeタブを選択。
    • ゲーム実行に依存するテストをここで実行。
  3. テストコードのサンプル
using NUnit.Framework;

[TestFixture]
public class CalculatorTests
{
    [Test]
    public void Add_ReturnsCorrectSum()
    {
        var calculator = new Calculator();
        var result = calculator.Add(2, 3);
        Assert.AreEqual(5, result);
    }
}

まとめ

  • アセンブリ分割は必須:
    最新版のUnityでは、Test Runnerを利用する際にアセンブリ定義ファイルを使用することが必須。
  • 依存関係を明確に設計:
    テスト対象コードとテストコードの分離、依存関係の適切な設定が重要。
  • 小規模プロジェクトでは簡略化:
    必要以上にアセンブリを細分化しないことで効率的に運用可能。

Test,Unity

Posted by hidepon