Godot4 GUTでスクリプトを作成してユニットテストを実行する手順

無料・軽快な 2D / 3D 用のゲームエンジン Godot Engine 4 で、GD スクリプトで作成した機能のユニットテストをする際に便利な無料アセット GUT で、指定したフォルダ内に配置した公式のサンプルスクリプトユニットテストを実行する手順を紹介します。
※ 3.x 系で 4.x 系が用意されていて 4.2 と書かれているので公式なサポートではないかもしれませんが 4.3 でも動作しました。

Godot4 ユニットテスト用アセットGUTのGodotAssetLibraryのページの一部20241124

※ 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 and res://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 スクリプトファイルを作成します。

Godot4 GUT テスト用のフォルダとスクリプトファイルの作成2

公式ガイドにならって res://test/unit フォルダの下に、test_example.gd ファイル作成します。

Godot4 GUT テスト用のフォルダとスクリプトファイルの作成3

テスト用スクリプトファイルの編集

ファイルシステムドックで、作成した test_example.gdダブルクリックすると Script ワークスペースでそのスクリプトファイルが開きます。

Godot4 GUT テスト用gdスクリプトの編集1

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
Godot4 GUT テスト用gdスクリプトの編集2

GUT に実行するテスト用スクリプトのフォルダを指定

下パネルGUT タブを開いて、右側の項目下にスクロールして表示された Test Directories の Include Subdirs リスト0 番目に、テスト用のスクリプトファイルを配置した res://test/unit フォルダを指定します。

Godot4 GUT テストするスクリプトのあるフォルダを指定してテスト実行1

テスト用のスクリプトファイルを配置しているフォルダパスが下パネル GUT タブの右側の Include Subdirs リスト0 番目設定されました。

Godot4 GUT テストするスクリプトのあるフォルダを指定してテスト実行2

テストの実行

テスト用のスクリプトの置いてあるフォルダを指定したら、下パネル GUT タブの左上の Run All ボタンを押して、テストを実行しましょう。

Godot4 GUT テストするスクリプトのあるフォルダを指定してテスト実行3

実行ウィンドウが起動して、テストの実行結果が表示されました。
サンプルのスクリプトでは、合格と不合格それぞれ1件ずつのテストケースがテスト用の関数として定義されているので、結果も合格1つ不合格1つ表示されています。
※ウィンドウサイズを変えても、表示内容はリサイズされません。表示内容は下側の角の三角形をマウスドラッグして移動・リサイズできます。

Godot4 GUT テストするスクリプトのあるフォルダを指定してテスト実行4

テストの不合格のスクリプトの行を表示

実行ウィンドウを閉じた後も、テストの結果を下パネル GUT タブ確認できます。

不合格の項目は、下図のように赤い丸のツリーで表され、 fail から始まるツリーの項目をクリックすると、その判定を行ったスクリプトの行が Script ワークスペースに表示されます。

Godot4 GUT テストのエラー箇所を表示1

テスト結果のテキストのコピー

先ほど閉じた実行ウィンドウに表示されていたテスト結果テキストは、下パネル GUT タブの中央上側の Copy ボタンでクリップボードにコピーできます。

Godot4 GUT テスト結果のテキストをクリップボードにコピー1

コピーしたテスト結果は、以下のようにテキストエディタなどに貼り付けられます。



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!

記事一覧 → Compota-Soft-Press

コメント

Ads Blocker Image Powered by Code Help Pro

お願い - Ads Blocker Detected

このサイトは広告を掲載して運営しています。

ポップアップを閉じて閲覧できますが、よろしければ

このサイト内の広告を非表示にする拡張機能をオフにしていただけませんか?

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

タイトルとURLをコピーしました