gun*_*888 18 flash unit-testing actionscript-3
我正在尝试通过为我正在处理的Flash项目编写ActionScript 3代码的单元测试来改进我的代码,但是我在智能障碍中理解如何在Flash程序的上下文中处理它.我似乎无法解决如何处理addChild和stage这样的事情,以及Flash应用程序典型的所有异步处理(addEventListeners等待加载的事情等).它真的与其他语言有什么不同吗?开发人员如何处理Flash程序的独特环境?
一些澄清:
小智 11
好问题.挑选要测试的项目的哪些部分是一个挑战 - 单个类或类集合,或两者兼而有之.
虽然围绕用户界面测试进行测试可以捕获许多逻辑和事件错误,但UI通常会发生很多奇怪的事情.Flash项目中的许多错误都可能是由于意外的用户交互模式 - 基本上beta测试人员在UI中做了一些你从未想过要做的事情.
如果您的项目是由用户交互驱动的,尤其是面向游戏而不是面向RIA,那么计划一系列良好的测试与测试本身一样重要.例如,您可以尝试操作A,然后执行操作B,知道B依赖于A,因为这就是您编写它的方式.测试人员可以在A之前尝试B,这可能是您没有预料到的情况,如果A和B作为单位独立测试则不会被捕获.这也可能意味着您需要编写3或4个测试:A,B,A-> B和B-> A,因此状态数可能会失控.
需要考虑的是像Flexunit这样的测试框架,可以自动完成许多任务.
编辑:我应该注意FlexUnit也适用于纯AS3.
我喜欢从前端显示器中抽象出应用程序逻辑.我认为对前端/显示器进行单元测试非常有用,但您可以对系统的内部逻辑和功能进行单元测试.这是MVC设计模式.
例如:假设您有一个Flash游戏,其中有一个玩家可以攻击敌人.您可能有一个类Player,一个类Monster和一个方法Player.attack(monster:Monster).
单元测试将在一组值Player和Monster,并调用attack()并确保结果是正确的.
您的前端显示,舞台,可点击对象等以及UI也将在实际环境中适当地调用这些对象.
单元测试将在一个单独的.swf文件,其执行的是导入模型对象测试(运行Player,Monster和你可能有任何其他人),但完全忽略你的所有视觉/显示元素.我会避免单元测试涉及用户交互的任何事情.