無料・軽快な 2D / 3D 用のゲームエンジン Godot Engine 4 で、GD スクリプトで作成した機能のユニットテストをする際に便利な無料アセット GUT で、指定したフォルダ内に配置した公式のサンプルスクリプトでユニットテストを実行する手順を紹介します。
※ 3.x 系で 4.x 系が用意されていて 4.2 と書かれているので公式なサポートではないかもしれませんが 4.3 でも動作しました。
※ GodotEngine 4.3 を使用しています。.NET 版ではありません。
※ GUT アセットのバージョンは 9.3.0 です。
※スクリプトは自己責任でご使用ください。
前回の記事
前回は、ユニットテストをする際に便利な無料アセット GUT をプロジェクトにインストールして、プラグインを有効化して、ユニットテスト用の GUT の画面を表示する手順を紹介しました。
公式ガイド
記事で紹介する手順は、公式ガイド「Quick Start — GUT 9.3.0 documentation」を参考にしました。
テスト用スクリプトを置くフォルダの作成
GUT は、指定したフォルダ内の全てのスクリプトのテスト用の関数を実行します。
公式ガイドでは、ユニットテスト用の res://test/unit フォルダ、統合テスト用 res://test/integration フォルダに分けることで、テストの頻度や速度の異なるテストを効率よく行えると推奨しています。
A good strategy with GUT is to separate unit and integration tests into separate directory structures (such as
res://test/unit
andres://test/integration
). Once you get a lot of tests, this will make it easier to run the fast unit tests frequently, and the slower integration tests only as often as is useful.GUT を使用する場合の適切な戦略は、単体テストと統合テストを別のディレクトリ構造 (res://test/unit や res://test/integration など) に分離することです。多数のテストを取得すると、高速な単体テストを頻繁に実行し、低速な統合テストを必要な頻度だけ実行することが容易になります。Quick Start — GUT 9.3.0 documentation と Google 翻訳
他のフォルダパスでの実行結果
必ず test/unit フォルダにしないといけないのかを、下図のように res://hoge/piyo フォルダを作り、その下にスクリプトファイルを置いて確認しました。
※詳細な手順は後で紹介します。
結果としては、他のフォルダパスでも問題なくテストを実行できました。
#当たり前かも。
テスト用スクリプトファイルの作成
作成した res://test/unit フォルダ内に test_example.gd スクリプトファイルを作成します。
公式ガイドにならって res://test/unit フォルダの下に、test_example.gd ファイルを作成します。
テスト用スクリプトファイルの編集
ファイルシステムドックで、作成した test_example.gd をダブルクリックすると Script ワークスペースでそのスクリプトファイルが開きます。
test_example.gd に最初に書かれているスケルトンコードは全て削除して、公式ガイド「Quick Start — GUT 9.3.0 documentation」のテスト用のサンプルコードをコピーして貼り付けて、 Ctrl + S などで保存します。
extends GutTest
func test_passes():
# this test will pass because 1 does equal 1
assert_eq(1, 1)
func test_fails():
# this test will fail because those strings are not equal
assert_eq('hello', 'goodbye')
# 参照 Quick Start — GUT 9.3.0 documentation : https://gut.readthedocs.io/en/v9.3.0/Quick-Start.html
GUT に実行するテスト用スクリプトのフォルダを指定
下パネルの GUT タブを開いて、右側の項目を下にスクロールして表示された Test Directories の Include Subdirs リストの 0 番目に、テスト用のスクリプトファイルを配置した res://test/unit フォルダを指定します。
テスト用のスクリプトファイルを配置しているフォルダパスが下パネル GUT タブの右側の Include Subdirs リストの 0 番目に設定されました。
テストの実行
テスト用のスクリプトの置いてあるフォルダを指定したら、下パネル GUT タブの左上の Run All ボタンを押して、テストを実行しましょう。
実行ウィンドウが起動して、テストの実行結果が表示されました。
サンプルのスクリプトでは、合格と不合格それぞれ1件ずつのテストケースがテスト用の関数として定義されているので、結果も合格1つ不合格1つと表示されています。
※ウィンドウサイズを変えても、表示内容はリサイズされません。表示内容は下側の角の三角形をマウスドラッグして移動・リサイズできます。
テストの不合格のスクリプトの行を表示
実行ウィンドウを閉じた後も、テストの結果を下パネル GUT タブで確認できます。
不合格の項目は、下図のように赤い丸のツリーで表され、 fail から始まるツリーの項目をクリックすると、その判定を行ったスクリプトの行が Script ワークスペースに表示されます。
テスト結果のテキストのコピー
先ほど閉じた実行ウィンドウに表示されていたテスト結果のテキストは、下パネル GUT タブの中央上側の Copy ボタンでクリップボードにコピーできます。
コピーしたテスト結果は、以下のようにテキストエディタなどに貼り付けられます。
res://test/unit/test_example.gd
* test_passes
* test_fails
[Failed]: ["hello"] expected to equal ["goodbye"]:
at line 9
1/2 passed.
==============================================
= Run Summary
==============================================
res://test/unit/test_example.gd
- test_fails
[Failed]: ["hello"] expected to equal ["goodbye"]:
at line 9
---- Totals ----
Scripts 1
Tests 2
Passing 1
Failing 1
Asserts 2
Time 0.024s
---- 1 failing tests ----
まとめ
今回は、無料・軽快な 2D / 3D 用のゲームエンジン Godot Engine 4 で、GD スクリプトで作成した機能のユニットテストをする際に便利な無料アセット GUT で、指定したフォルダ内に配置した公式のサンプルスクリプトでユニットテストを実行する手順を紹介しました。
参照サイト Thank You!
- Godot Engine – Free and open source 2D and 3D game engine
- GUT – Godot Unit Testing (Godot 4) – Godot Asset Library
- Gut 9.3.0 (Godot 4.2) — GUT 9.3.0 documentation
- Quick Start — GUT 9.3.0 documentation
- GUT を使用した Godot でのテスト駆動開発 (チュートリアル) – YouTube
記事一覧 → Compota-Soft-Press
コメント