我正试图通过为我的Flash3代码编写单元测试来改进我的代码,但是我在理解如何在ActionScript程序的上下文中处理它时遇到了一个心理障碍。我似乎无法理解如何处理addChild和stage之类的事情,以及闪存应用程序中典型的异步处理(addEventListeners用于等待加载的东西,等等)。它真的和其他语言有什么不同吗?开发人员如何处理Flash程序的独特环境?
以下是几点说明:
发布于 2011-02-06 06:44:51
问得好。选择项目的哪些部分进行测试是一个挑战--单个类或多个类,或者两者兼而有之。
尽管围绕用户界面测试的测试可以捕获许多逻辑和事件错误,但UI通常是可能发生大量奇怪事情的地方。Flash项目中的许多错误可能是由于意想不到的用户交互模式造成的--基本上,beta测试人员会在UI中做一些你从未想过会做的事情。
如果您的项目是由用户交互驱动的,尤其是面向游戏的,而不是面向RIA的,那么计划一组良好的测试序列与测试本身一样重要。例如,您可以先尝试操作A,然后再尝试操作B,因为您知道B依赖于A,因为这是您编写它的方式。测试人员可能会在A之前尝试B,这是您可能没有预料到的场景,如果A和B作为单元独立测试,则不会被捕获。这也可能意味着您想要编写3到4个测试:A、B、A->B和B->A,因此状态的数量可能会变得无法控制。
需要考虑的是像Flexunit这样的测试框架可以自动执行许多任务。
编辑:我要指出的是,FlexUnit同样适用于纯AS3。
发布于 2011-02-06 06:07:00
我喜欢从前端显示内容中抽象出应用程序逻辑。我不认为对前端/显示内容进行单元测试是非常有用的,但您可以对系统的内部逻辑和功能进行单元测试。它是MVC设计模式。
例如:假设你有一个Flash游戏,其中有一个玩家可以攻击敌人。您可能有一个类Player
、一个类Monster
和一个方法Player.attack(monster:Monster)
。
您的单元测试将在Player
和Monster
中设置值,并调用attack()
,然后确保结果正确。
您的前端显示、舞台、可单击对象等和UI也会在实际环境中适当的时候调用这些对象。
单元测试将在一个单独的.swf文件中运行,该文件执行导入模型对象(Player
、Monster
和您可能拥有的任何其他对象)的测试,但完全忽略所有视觉/显示元素。我会避免单元测试任何涉及用户交互的东西。
https://stackoverflow.com/questions/4909959
复制相似问题