BioErrorLog Tech Blog

試行錯誤の記録

Godot Engineでパラメータテストを書く | GUT

Godot EngineのGUTプラグインを使って、パラメータテスト/parameterized testを書く方法を整理します。

はじめに

以前、Godot Engineでテストを書く方法をまとめました: www.bioerrorlog.work

今回はそれに加えて、パラメータテストを書く方法をメモします。

Godot Engineでパラメータテストを書く

テスト関数の引数に、params=use_parameters(<List>)の形でListを渡せば、そのListの要素の数だけ繰り返しテストが実行されます。

例:

# テスト対象
class Foo:
  func add(p1, p2):
    return p1 + p2
# テストコード
extends GutTest

var foo_params = [[1, 2, 3], ['a', 'b', 'c']]

func test_foo(params=use_parameters(foo_params)):
  var foo = Foo.new()
  var result = foo.add(params[0], params[1])
  assert_eq(result, params[2])

Ref. Parameterized Tests · bitwes/Gut Wiki · GitHub

1回目のテストではparams[1, 2, 3]が、2回目のテストではparams['a', 'b', 'c']が割り当てられ、パラメータとして利用できます。

例えば1回目のテストでは、

  • params[0]: 1
  • params[1]: 2
  • params[2]: 3

として各値が渡されてます。


ちなみにparams[1]のようにindexで値にアクセスするのがわかりにくければ、dictで渡しても問題ありません。

var extract_words_from_text_params = [
    {"input": "abc def g", "expected": ["abc", "def", "g"]},
    {"input": "abc, def g?", "expected": ["abc", "def", "g"]},
]
func test_extract_words_from_text(params=use_parameters(extract_words_from_text_params)):
    var input = params["input"]
    var expected = params["expected"]
    var result = _obj.extract_words_from_text(input)
    assert_eq(result, expected)

こうした場合、indexアクセスではなくparams["input"]のように意味を持つkeyでアクセスさせることができます。

おわりに

以上、Godot Engineでパラメータテストする方法をメモしました。

ちょっとしたものでしたが、どなたかの参考になれば幸いです。

[関連記事]

www.bioerrorlog.work

www.bioerrorlog.work

www.bioerrorlog.work

www.bioerrorlog.work

参考

Parameterized Tests · bitwes/Gut Wiki · GitHub