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

5

我对GML和TDD一窍不通。我想练习使用测试驱动开发和单元测试到游戏制作语言GML中。由于GML是事件驱动的,这是否可行?我没有找到很多关于如何在GML中实现单元测试和测试驱动开发的示例或教程。

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

2个回答

3

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

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

这将更新TEST对象上的计数器,显示所有测试的结果(绿色表示成功,红色表示失败)。在测试失败时,它将打印您编写的应该语句和预期及实际结果。
我发现GML的限制导致我编写了许多辅助方法,并且需要解决异常处理的问题。
据我所知,这是GameMaker中唯一现有的测试框架,并且在开发游戏时仍有很长的路要走才能实现完整的TDD(我已经用当前版本编写了扫雷克隆版)。我计划继续发展该项目,并希望使其更加强大且更加易于使用。

我一直在开发单元测试,而你的看起来更像是Gherkin风格的验收测试。也许开始着手开发一个更完整的测试套件会很不错?YAL的GMLive可能也是一个不错的选择,同时还有Rubber。 - Rob
@RobQuist 最近一直在玩 GMLive :D 也会试试 Rubber.. 很遗憾我无法在这里私信你.. 如果你能提供 GitHub 仓库的链接,我很想看看你正在开发的项目.. 我最近重新开始着手 hobo_test 的工作,认为更多的想法分享总是好的。 - Dan Bradbury

0

您可以对任何可独立调用且具有可验证结果的内容进行单元测试。

我不了解GML,但从维基百科上可以看出它是一种特殊用途的脚本语言。如果您能够从通常运行的位置之外调用此类脚本,并且能够检查您可以测试它的结果,则可以进行测试。

然而,

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

这可能意味着您不能在隔离环境中调用任何脚本或函数。


很遗憾,没有运行器 GML 无法真正运行,并且在单独的环境中导入/运行单独的 GML 文件有点麻烦。您需要集成测试脚本并以特殊方式启动游戏,以便运行测试套件而不是游戏。 - Rob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接