3年ぶりの改版となる『Unity Test Framework完全攻略ガイド 第3版』を、コミックマーケット107の2日目(水曜日)南i-17b「いか小屋」で頒布します。
第3版では、Unity Test Frameworkパッケージの最新APIへの追随だけでなく、本書で扱う範囲を広げています。 第1章は大幅にリライトし、ユニットテスト以外のテスト活動も含めた全体像や自動テストの保守性にも言及しています。 また追加した第14章「継続的インテグレーション」でCI環境の構築方法を解説しているほか、テストコードの保守・運用や実装テクニックについての一般知識も盛り込みました。

想定読者
UnityでC#スクリプトを書けるレベルのソフトウェアエンジニア(プログラマー)を想定しています。UnityやC#言語自体の解説はしていません。 テスト、特にユニットテストに関しては、入門レベルからカバーしています。
また読者の属する開発プロジェクトの規模を、個人から小規模と想定しています*1。 CEDECなどで発表されるエンドツーエンド(E2E)テストの自動化は難易度も高くコストもかかるものですが、開発者テストは個人や小規模チームでの開発でも効果を発揮します。むしろQA担当者の大量投入という選択肢のないプロジェクトでこそ有効活用すべき技術です。
目次の紹介
各章の内容(第2版からの差分)は次のとおりです。
第1章 テストとは何か
第2版から大幅にリライトしています。 「テスト」と、ゲーム業界で使われる「デバッグ」という言葉の違い、CEDEC2025のセッション『E2Eだけがテスト自動化じゃない! Unity製ゲームの開発者テスト チュートリアル』でお話したシフトレフト、階層化テスト戦略、また自動テストの保守性にも言及しています。
第2章 Unity Test Frameworkの基本
Unity Test Frameworkパッケージを使ってユニットテストを書き、実行する手順を、順序立てて説明しています。 第3版では「2.6 よいテストコードを書くヒント」を追加しています。
第3章 テストモード
Edit ModeテストとPlay Modeテストの違い、それぞれに固有のAPIを紹介しています。 第2版までは個別の章でしたが統合しました*2。
第4章 非同期処理のテスト
第3版ではUnity Test Framework v1.3でサポートされたasync/awaitによる非同期テストを追加し、従来からあるUnityTest属性によるテストについても制限事項をアップデートしています。
第5章 アサーション
NUnit3の制約モデル(Assert.That)によるアサーション(テスト実行結果の検証)について、検証対象や目的に応じた最適な書きかたやTips、アンチパターンを紹介しています。
第3版では、制約モデルの記述例および失敗メッセージ例をいくつか本文中に記述するようにしました。 またTipsに分散していた特殊なアサーションに関する記述を本章にまとめました。
第6章 パラメタライズドテスト
ひとつのメソッドを引数を様々に変えてテストしたいときに使用できるパラメタライズドテストの使いかたを紹介しています。
第3版では、Unity Test Framework v1.4で追加されたParametrizedIgnore属性および、Unity Test Frameworkの問題が解消されたTestFixture属性によるパラメタライズドテストについての解説を追加しました。
第7章 テストダブル
テスト対象が何らかのコンポーネントに依存しているとき(内部で生成した疑似乱数やサーバからのレスポンスに応じて結果が変わるなど)、その依存コンポーネントを偽物(スタブ、スパイ、モックなど)に置き換えてテストするテクニックを紹介しています。
第8章 Unity Test Framework Tips
テストの前処理・後処理、実行プラットフォーム制限、カテゴライズ、タイムアウト時間の変更、MonoBehaviourのテスト方法などを紹介しています。
第9章 Scene・アセット・ファイルの使用
Edit Modeテスト・Play Modeテスト(エディター実行)・Play Modeテスト(プレイヤー実行)それぞれで、Sceneファイルをロードしてテストに使用する方法を紹介しています。
第3版では、Scene以外のテスト用アセットをプレイヤー実行で使う方法などを追加しています。
第10章 UPMパッケージのテスト
Unity Package manager(UPM)パッケージのテストを実装・実行する方法紹介しています。
第11章 Unity Test Frameworkの拡張
第3版で追加した章です。
NUnitの属性、制約、比較子(Comparer)をゲームタイトルで拡張して使用する方法を紹介しています。
第12章 テストの実行方法
UnityエディターのTest Runnerウィンドウ、Jet Brains Rider、コマンドラインからのテスト実行方法・オプションを紹介しています。
第13章 コードカバレッジ
Unity Code Coverageパッケージを用いてコードカバレッジ(テストがプロダクトコードのどの部分をカバーしているかの指標)を採取する方法を紹介しています。
第14章 継続的インテグレーション
第3版で追加した章です。 GitHub Actionsを用いたCI環境の構築方法、octocovによるコードカバレッジの可視化などを紹介しています。
第15章 テスト実装のヒント
壊れやすい「実装のテスト」ではなく、変更に強い「仕様のテスト」を書くためのアプローチを紹介しています。 テストケースを導出するためのテスト技法(同値分割法・境界値分析・デシジョンテーブル・組み合わせテスト)、再現テスト、テスト駆動開発(TDD)。
第3版ではランダム性をもつテスト対象をどうテストするかのアプローチを追加しています。
付録A Test Helperパッケージ
第3版で追加した付録です。 筆者の公開しているUnity Test Framework拡張集であるTest Helperパッケージを紹介しています。
付録B Roslynアナライザー
第3版で追加した付録です。 Roslynアナライザーによる静的解析について紹介しています。
付録C JetBrains Rider Tips
IDEにRiderを使う場合の、コグニティブ複雑度の計測(CognitiveComplexityプラグイン)、テスト用Live Templateの紹介。
付録D OpenUPM-CLI
本書で紹介しているUPMパッケージをUnityプロジェクトにインポートするのに便利なopenupm-cliコマンドの紹介。
表紙
いかの足が2本から3本に!
スペックと頒布価格
変更点を特記していない章も、前提バージョンの変更や記述の見直しなどを実施しています。 原稿の行ベースで見ると第2版の4,623行に対して、+5,296行、-2,612行、差し引き(純増)+2,684行、計7,307行。 ページ数は152から220と68ページ増。
しかしなんと、お値段据え置き ¥2,000 で頒布します。たぶん増刷はしません。 当日残ればBOOTHで通販します。
また電子版はこれまで同様、第2版以前を購入いただいていれば追ってアップデートします。
スペースの場所
2日目(水曜日)南i-17b「いか小屋」です。

既刊の在庫も持っていきます。