3

我构建并维护了一组 Flash 组件,这些组件分发给发布者并允许他们与我们的系统集成。目前该组件没有 UI,仅包含用于查询我们的系统服务器、解析响应和修改查询中发送的参数的编译代码。Flex 和 CS3 都有一个 As2 版本和一个 AS3 版本。我们典型的工作流程是这样的:

1.) 加载组件 2.) 在组件上设置参数 3.) 告诉组件查询我们的系统 4.) 等待表示响应已被接收和解析的事件 5.) 调用组件上的方法以获取和解析使用解析的数据

我们最近一直在谈论自动化这些组件的测试,并且似乎有很多关于 AsUnit 和 FlexUnit 等框架的讨论。但是,我一直无法掌握如何有效地使用其中之一。示例和教程总是忽略现实世界的示例,而是提供多个类和过多的代码来测试示例函数是否返回 num1+num2。

我唯一能猜到的是,这些测试框架旨在从一开始就实施,并在开发之初就为测试套件、测试运行程序和测试用例进行规划。

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

我的问题是,是否有任何方法可以自动测试现有的、广泛分布的、已建立的 Flash 组件,而无需完全重新设计以适应测试框架?还是我误解了测试框架而这已经成为可能?

更新:感谢您的回复。我已经开始将我的组件与 AsUnit 集成,并认为我对它如何帮助我有了很好的理解。但是,AS2 AsUnit 不支持异步测试用例,我很难找到支持的 AS2 单元测试框架。异步测试对这个项目非常重要。有人对不同的框架有任何建议吗?谢谢!

4

3 回答 3

3

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

然而,我要说的是,我在 Flash/Flex 单元测试方面的经验并不像在其他语言(如 Ruby 或 .NET)方面那样积极,原因有以下三个。首先,如此高度的动作脚本代码与 UI 相关,而且这种代码即使不是不可能测试也很难。另一个原因是测试运行器不适合插入到持续集成环境中,例如CruiseControl.NETCruiseControl.rb,因为它需要人工运行并单击按钮。最后,单元测试的一个巨大好处通常是您可以将它与覆盖分析工具(如NCoverrcov)一起运行. 如果没有经过修改的编译器(例如Flexcover),Flash/Flex 不适合进行此类分析。

于 2008-10-20T20:14:06.890 回答
2

很高兴听到你选择了 AsUnit!

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

AsUnit 的最新版本确实支持 ActionScript 2 中的异步测试。 as25 分支可以在这里找到:

http://github.com/lukebayes/asunit

于 2009-05-11T21:13:11.003 回答
1

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

  1. 在测试应用程序中编译脚本,在我们的例子中使用 flex
  2. 设置定时器(看门狗)应用程序,以防循环失败
  3. 运行应用程序,然后:
    • 连接到 PHP 后端以获取测试用例
    • 将测试馈送到组件
    • 阅读结果并将其发回
  4. 看门狗会启动并杀死首先发生的应用程序:
    • 计时器用完了(合理的超时)
    • 应用程序发回结果
  5. 如果还有其他测试要运行,请转到 2。

绝对不优雅,但完成了工作(这是使用 AS1 脚本)

于 2008-10-21T13:06:41.183 回答