最終確認日
Godotで単体テストをしてみたい
背景
「オンラインゲームの仕組みの本ー第6章をGodotに置き換えながら読む」で、叩いて被ってじゃんけんポンを作っているが、その結果がおかしい場合がある。
通信機能が邪魔しているのか関数自体が間違えているのかの判定をしたい。バグを追っていてもいいが、これこそユニットテストの出番でしょ!ってことで、初めてのGodotでのユニットテストをやってみる。
ドキュメント
- Unit testing - Godot Docs
- これはGodotエンジン側の開発のテストの話らしいので、今回は違う。
- GUT (Godot Unit Test)というテストフレームワークがある。
- Unit testing GDScript with GUT
公式ドキュメントには、特にエンジン側のテストの話はあるがゲーム制作中のテストについては特に書いていない。
プロジェクトをのぞいてみる
以前、Godotのディレクトリ構造を調査した時に覗いたプロジェクトを見てみる。
「GDQuestのlearn-gdscriptプロジェクトをのぞいてみよう 」よりGDQuest/learn-gdscript のテストについて
addons
フォルダにgut
があることを確認res://gut/integration/test_course.gd
があるres://tests
というフォルダもあるが、そっちはextends EditorScript
となっている。- これは Godot のエディタ内部のエラーメッセージデータベースの検証テスト
Godotのプロジェクト「OpenRTS」の中身をのぞいてみよう よりlampe-games/godot-open-rtsのテストについて
GDQuestはいいぞと思っているので、倣ってGUTを使ってみる。
GUTをつかう
Quick StartよりGUTをインストールして使ってみる。
1. アドオンとして追加
2. プラグインを有効化する
Project
>Project Settings
よりプラグインを有効化する
3. テストコードのためのディレクトリを用意する
- テストに関するコードを配置するためのディレクトリを用意する
- GUTのドキュメントでは次の名前をオススメしている
res://test
res://test/unit
res://test/integration
- 先ほど見たGDQuestでは
res://gut/integration
だった。 res://tests/unit
にしようかな。
4. 作ったディレクトリをテスト対象とする
- GUTパネルから3で作ったディレクトリを設定する
5. テストサンプルを作ってみる
res://tests/unit/test_example.gd
を作る- テストを作る時は
test_
をつけることでGUTに認識してもらえる。- これはGUTパネルから変更もできる(
misc
のところ)
- これはGUTパネルから変更もできる(
test_example.gd
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')
6.テストを実行する
- GUTパネルを選択して
Run All
をクリックする - GUTパネルでもテスト結果が表示される
まとめ
テストの詳しい書き方は「Creating Tests - Gut Docs」に書いてある。
とりあえず自分のやりたいことはできそうな雰囲気なので、今回のノートではここまで。

公開日
更新日