2008-10-20 25 views
3

我构建和维护一组分发给发布者的Flash组件,并允许它们与我们的系统集成。目前,该组件没有UI,只是包含查询我们的系统服务器,解析响应以及修改查询中发送的参数的编译代码。 Flex和CS3都有As2版本和AS3版本。我们典型的工作流程是这样的:现有Flash组件的自动测试(非UI)

1)加载组件的组件 3)告知组件来查询我们的系统 4)上 2)设定参数等待事件称反应一直接收并解析 5.)调用组件上的方法来检索和使用解析的数据

最近我们谈论了很多关于自动化这些组件的测试的知识,似乎围绕框架AsUnit和FlexUnit。但是,我从来没有能够掌握如何有效地使用其中之一。这些示例和教程总是吝啬现实世界的例子,而是提供了多个类和过多的代码来测试示例函数是否返回num1 + num2。

我唯一能猜到的就是这些测试框架的目的是从一开始就实施,为测试套件,测试运行器以及开发阶段内置的测试用例进行规划。

我们组件的自动化测试必须确保属性已正确设置,这些属性在请求中发送到我们的系统,收到的响应是正确的,考虑到发送的参数,解析的数据包含正确的信息,错误,不良响应或无限解析循环。

我的问题是,有没有什么办法可以自动化现有的,广泛分布的,建立的Flash组件的测试,而无需将其完全修改为适合测试框架?或者我误解了测试框架,这已经是可能的了?

UPDATE:谢谢你的回应。我已经开始将我的组件与AsUnit集成,并且认为我对它如何能够帮助我有很好的理解。但是,AS2 AsUnit不支持异步测试用例,而且我很难找到一个AS2单元测试框架。异步测试对这个项目非常重要。有没有人有不同的框架建议?谢谢!

回答

3

我们在我们的项目中使用FlexUnit,对此我感到非常满意。假设你的项目的设计是相当松散的耦合程度,那么为了测试你的代码,你根本不需要改变太多(如果有的话)。如果您已经在使用像CairngormPureMVC这样的MVC框架,FlexUnit应该很轻松地集成。

但是我会说,我的Flash/Flex单元测试经验并不像其他语言(如Ruby或.NET)那样积极,原因有三。首先是如此高度的动作代码与用户界面相关,如果不是无法测试的话,这种代码很难。另一个原因是测试运行者不适合插入持续集成环境,如CruiseControl.NETCruiseControl.rb,因为它需要人工运行它并单击按钮。最后,单元测试的巨大好处通常是您可以与覆盖分析工具一起运行,例如NCoverrcov。 Flash/Flex不适用于这种类型的分析,但不包含修改后的编译器,如Flexcover

1

虽然我从来没有与ActionScript中的单元测试工作的机会,在工作中,我们创建了一个框架:

  1. 使用Flex
  2. 编译测试应用程序内的脚本(S),在我们的例子
  3. 设置一个计时器(看门狗)应用,在循环故障的情况下
  4. 跑,反过来该应用程序:连接到PHP后端
    • 得到一个测试用例
    • 喂测试组件
    • 读取结果,并送他们回
  5. 看门狗会踢,杀死哪个首先发生应用程序:
    • 定时器跑出(合理的超时)
    • 应用程序发回的结果
  6. ,如果有其他的测试运行,转到2

肯定不是优雅,但没有(这与AS1脚本)

2

很高兴听到你去与AsUnit的工作!

AsUnit是唯一的单元测试框架,它可以为您提供一致的ActionScript 2和ActionScript 3体验。它不依赖于任何外部框架 - 尤其是Flex,并且在为项目创建测试时不存在实际问题事实之后。

最新建立AsUnit确实具有异步测试的支持在ActionScript 2的AS25分支可以在这里找到:

http://github.com/lukebayes/asunit

+0

感谢卢克!那么我就不得不再看看这个! – nerdabilly 2009-05-12 14:20:14