/UnityTestExamples

Sample project for "Unity Test Framework完全攻略ガイド" and "Unity Test Framework完全攻略ガイド 統合テスト編"

Primary LanguageC#MIT LicenseMIT

Unity Test Examples

meta-check test Integration Test

Click English for English page if you need.

このリポジトリについて

このリポジトリは、同人誌『Unity Test Framework完全攻略ガイド』および同『統合テスト編』のサンプルコードです。

電子版 (PDF) は次のWebサイトから購入できます。

BOOTH

技術書典マーケット

サンプルプロジェクトの構造

統合テスト編のサンプルには Integration カテゴリーを設定しています。

APIExamples

Unity Test FrameworkおよびNUnit3のAPIカタログ

Assets
└── APIExamples
    ├── Scripts
    │   └── (snip)
    └── Tests
        ├── Editor
        │   └── UnityTestFramework
        │       └── 第3章 Edit Modeテスト, 第5章 非同期処理のテスト
        └── Runtime
            ├── NUnit
            │   └── 第6章 アサーション, 第8章 パラメタライズドテスト, 第9章 Unity Test Framework Tips
            └── UnityTestFramework
                └── 第5章 非同期処理のテスト, 第9章 Unity Test Framework Tips

Note

『Unity Test Framework完全攻略ガイド 第3版』より、「6.4 カスタムアサーション」の例を Test Helper パッケージ(com.nowsprinting.test-helper)に含まれる GameObjectNameComparer および DestroyedConstraint を日本語訳したものに置き換えました。
変更差分はコミット <dc1b643> を参照してください。

BasicExample

第2章 Unity Test Frameworkの基本

Assets
└── BasicExample
    ├── Scenes
    │   └── (snip)
    ├── ScriptableObjects
    │   └── (snip)
    ├── Scripts
    │   ├── Editor
    │   │   └── (snip)
    │   └── Runtime
    │       ├── Entities
    │       │   ├── CharacterStatus.cs          // 「2.4 テストコードの書きかた」のSUT
    │       │   └── (snip)
    │       └── Level
    │           └── (snip)
    └── Tests
        ├── Editor
        │   └── AssetValidators
        │       ├── LevelValidator.cs
        │       └── RaceValidator.cs
        └── Runtime
            └── Entities
                ├── Enums
                │   └── ElementTest.cs
                ├── Settings
                │   └── HitPointGaugeSettingTest.cs // 「14.2 仕様テストにおけるテストケースの考えかた」のテストコード
                ├── CharacterStatueTest.cs      // 「2.4 テストコードの書きかた」のテストコード
                └── PassiveEffectTest.cs        // 「14.2.5 状態遷移テスト」のテストコード

TestDoubleExample

第7章 テストダブル

Assets
└── TestDoubleExample

InternalsVisibleToExample

第9章 Unity Test Framework Tips

Assets
└── InternalsVisibleToExample   // 「9.10 internalメソッドのテストを書きたい」

SceneExample

第10章 Sceneを使用するテスト

Assets
└── SceneExample

Note

『Unity Test Framework完全攻略ガイド 第3版』より、10.2.2 および 10.3 で紹介している Scene のロード処理を、Test Helper パッケージ(com.nowsprinting.test-helper)に含まれる LoadScene 属性を使用する形に置き換えました。
変更差分はコミット <86f8ab9> を参照してください。

Packages

第11章 UPM パッケージのテスト

埋め込みパッケージ

Packages
└── com.nowsprinting.embedded-package-sample

ローカルパッケージ

LocalPackages
└── com.nowsprinting.local-package-sample

UGUIExample

統合テスト編 第2章 uGUI操作の自動化

Assets
└── UGUIExample

InputSystemExample

統合テスト編 第3章 Input Systemによる操作の自動化

Assets
└── InputSystemExample

InputExample

統合テスト編 第4章 Input Managerによる操作の自動化

Assets
└── InputExample

VisualRegressionExample

統合テスト編 第5章 ビジュアルリグレッションテスト

Assets
└── VisualRegressionExample

Branches

master

Unity 2019 LTSプロジェクトです。 Unity Test Frameworkのバージョンは最新に追随し、APIの使用サンプルも追加しています。

unity2021

Unity 2021 LTSプロジェクトです。masterブランチとの差分は次のとおりです。

  • NSubstituteパッケージの取得元を、net.tnrd.nsubstituteからUnityNuGetに変更
  • Roslynアナライザの導入
    • NSubstitute.Analyzers.CSharp
    • NUnit.Analyzers
    • IDisposableAnalyzers

utf2

Note

実験的バージョンであったUnity Test Framework v2.0の開発は中断されました1。 それに伴ない、ブランチutf2は削除しました。

WebGL Player

以下のUnityバージョンで問題が取り除かれたため2、WebGLプレイヤーでもUnityTest属性のテストを実行するようにしてあります。

Fixed in 2020.3.42f1, 2021.3.8f1, 2022.1.12f1, 2022.2.0b3, 2023.1.0a4

これらのUnityバージョン未満では、WebGLプレイヤーでPlay Modeテストを実行しようとするとコンパイルエラーとなります。

License

MIT License

Footnotes

  1. https://forum.unity.com/threads/unity-test-framework-2-0-ready-for-feedback.1230126/page-3#post-9531214

  2. https://issuetracker.unity3d.com/issues/webgl-chrome-the-message-header-is-corrupted-and-for-security-reasons-connection-will-be-terminated-dot-errors