TDD和单元测试,GML游戏制作者语言



我是GML和TDD的超级n00bs。我想练习测试驱动开发和游戏制作语言GML的单元测试。由于 GML 是事件驱动的,这是否可能?我没有幸找到很多关于如何在GML中实现单元测试和测试驱动开发的示例或教程。

你如何用游戏制作者语言编写单元测试?

我已经开始专门为GML编写一个测试框架。它被称为hobo_test,你可以在github上找到它。目标是提供一组对象/脚本,您可以将这些对象/脚本拖放到任何项目中(从查找器),然后开始编写一些简单的测试。

with(o_player)
  {
  before_lives = num_lives
  take_damage();
  it("should decrease the number of lives",  before_lives-1, num_lives);
  }

这将更新 TEST 对象上的计数器,该对象将绘制所有测试的结果(绿点表示成功,红色表示失败)。测试失败后,它将打印出您编写的带有预期和实际结果的 should 语句。

我发现 GML 的局限性导致我编写了很多帮助程序方法,并与缺乏异常处理作斗争。

据我所知,这是GameMaker唯一现有的测试框架,为了在开发游戏时允许完整的TDD,还有很长的路要走。(我能够使用当前迭代编写扫雷克隆)。我计划继续该项目的发展,并希望使其更强大,使用起来更轻松。

您可以对任何可以单独调用的内容进行单元测试,并获得可验证的结果。

我不知道GML,但我可以从维基百科上瞥见它是一种特殊用途的脚本语言。如果您设法从通常运行的任何外部调用这样的脚本,并且您设法检查可以测试它的结果。

然而

"GML is heavily integrated with the Game Maker environment."

可能意味着您不能单独调用任何脚本或函数。