最終確認日
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」に書いてある。
とりあえず自分のやりたいことはできそうな雰囲気なので、今回のノートではここまで。

公開日
更新日
 
   
   
   
   
   
   
   
  