写点什么

Fluint——针对 Flex 的单元测试工具

  • 2008-11-02
  • 本文字数:1646 字

    阅读完需:约 5 分钟

随着富 Internet 应用(RIA)技术的不断流行,出现了更多支持 RIA 开发的工具。Flex 单元测试工具 Fluint 就是其中之一。

InfoQ 采访了 Fluint 的开发者和 Flex 的架构师—— Michael Labriala ,以了解在 Flex 开发过程中使用 Fluint 作为单元测试解决方案的更多信息。他解释说:

对于 Flex 单元和集成测试,“Fluint”非常简洁。它是为编写 Flex2 或 Flex3 应用的开发者提供的测试框架,无论这些应用是通过 Adobe Flash Player 在浏览器中部署的,还是通过 Adobe AIR 在桌面上部署的。

Fluint 最初是作为 Digital Primates 的内部工具开发的,用以测试一些非常大的项目。随着 Flex 社区对其需求的不断增长,Digital Primates 决定把其发布为一个开源项目。尽管针对 Flex 有其他的单元测试解决方案,按照 Labriala 的说法,Fluint 仍填补了重要空白。他解释说:

有其他几个项目也是关于 Flex 单元测试的。可是,Fluint 是到目前为止唯一一个涵盖单元测试和集成测试的项目。这很重要,原因如下:Flex 是一个组件框架,在你装配一个应用时,你是在 Adobe 组件和自己制作的组件基础上进行的。问题是从测试意义上讲,一个组件并没有提供一个好的‘单元’。组件内部非常复杂,而且有些方面天生就是异步的。 虽然你可以给你需要单元测试的应用程序和组件增加方法,但是你很可能会发现把几个已有组件整合为一些新的组件是应用程序中最容易出错的地方。已有框架不能很好地处理异步操作。因此,对由几个异步组件整合而成的组件所做的测试工作往往并不理想。

被问及可能使用 Fluint 的典型案例时,Labriala 回答道:

这个例子有点老套,但是它很好地说明了 Fluint 的强大之处。设想一个包含用户名域、密码域及登录按钮的简单登录表单。你可能还有两个客户端校验来确保用户名和密码不要少于一位字符或太长,或者不包含任何无效字符。如果它们是合法的,则发出一个带有用户名和密码‘login’事件,这样你的应用程序的另一部分就可以执行登录逻辑了。如果校验失败,在屏幕上就会显示一个错误消息。 任何 Flex 初学者都应该能够编写这样的组件,但是目前除了 Fluint 没有其它工具能够完全测试这个组件。

为了说明一些独特特性,Labriala 给出了用 Fluint 针对上述例子编写简单测试的步骤:

  • 把组件增加到显示列表以进行测试——这一步启动了组件的内部生命周期,以便对其方法进行真正测试。这里也是一半测试框架做不到的地方,因为它们实际上不允许把 UIComponent 增加到显示列表进行测试。
  • 等待数据提交以进行事件测试——大部分现有测试框架没有能力等候多个异步事件。
  • 确保组件传播一个‘login’事件并验证用户名和密码域——这里是大多数测试框架无法满足的需求。有些框架只是简单的获取屏幕快照并对其作比较,但是当结果是事件时这帮不上任何忙。事件不会显示在屏幕上以供比较。尽管不同的框架用于不同的目的,但这也是功能测试工具无法检测的。功能测试工具通常只是记录你的动作并让你在特定域录入数据,但是它们缺乏捕获并审查结果事件的能力。

关于 Fluint 的开发,Labriala 解释道:

Fluint 包含了一个 ActionScript 类库,其含有测试框架和相关的类。还有一个用 MXML 写的例子测试运行器。这只是你在 Web 浏览器中编写并运行测试所需的两个部分。然而,如果你对自动化环境感兴趣,Fluint 也提供了一个为 Adobe AIR 而写的测试运行器。它将运行已编译成单独模块的测试,并输出成 XML 文件。该 XML 文件很快就能与 JUnit 兼容,这样已有报表工具就可以为 Fluint 所用了。最后,有一个 ANT 任务可用,以便更容易地执行 AIR 测试运行器。

谈到未来的增强,Labrialal 说:

社区提出了许多非常好的增强意见,可能会在 Fluint 下一版本中得以体现。现在我们正在提升其性能,通过移除测试运行器中的一些低效代码,在对大项目进行测试的时候,其速度可以提高三倍以上。不管怎样,我们都在积极地为项目寻找贡献者。Digital Primates 到目前为止一直是主要的推动力量,但是我们希望随着我们的不断前进,这个项目最终变为社区所有。

查看英文原文: Fluint Unit Test Tool for Flex

2008-11-02 21:112124
用户头像

发布了 150 篇内容, 共 46.7 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

KubeEdge边缘计算在顺丰科技工业物联网中的实践

华为云开发者联盟

云计算 云原生 工业物联网 顺丰

计费准确率高达100%,是如何实现的?

科技怪咖

本周四晚19:00知识赋能第七期第3课丨OpenHarmony WiFi扫描仪实现

OpenHarmony开发者

OpenHarmony

泰禾智能:智能改变未来,成就工业设备行业佼佼者

科技怪咖

秋招涨薪攻略!拿着GitHub标星80k的阿里性能优化笔记,把项目优化个遍

退休的汤姆

Java 阿里 社招 Java工程师 秋招

“似水无形” 的小程序化技术

Speedoooo

小程序 小程序管理平台 轻应用 快应用 小程序平台

MobTech ShareSDK Android端微信分享小程序

MobTech袤博科技

微信小程序 android sdk

技术分享| anyRTC 8月更新迭代

anyRTC开发者

音视频 WebRTC 视频通话 实时消息 抓拍图片

这三道MySQL面试题,99%的人答不出来!

程序员小毕

Java MySQL 数据库 程序员 面试

保利威荣获「年度最佳直播服务商」!引领视频直播行业创新发展

科技怪咖

打造耳聪目明的MES系统,你准备好了吗?

科技怪咖

1 分钟在 Serverless 上部署现代化 Deno Web 应用

阿里巴巴中间件

阿里云 Serverless 云原生

Rewind the PlanetScale Rewind | 拆解硅谷当红科技公司如何做 Product Marketing

Bytebase

​Black Hat 2022 聚焦软件供应链安全

SEAL安全

网络安全 软件供应链安全

105份墨天轮“国产化迁移”干货文档汇总(含TiDB、openGauss、上云等)

墨天轮

数据库 阿里云 TiDB 国产数据库 达梦

B站基于Iceberg+Alluxio助力湖仓一体项目落地实践

Alluxio

B站 iceberg Alluxio 湖仓一体 8月月更

文本纠错:提升OCR任务准确率的方法

合合技术团队

人工智能 文字识别 OCR 合合信息

如何应对软件可变性?这4种常用的方法肯定要知道

华为云开发者联盟

云计算 软件 后端

RT-Thread记录(十四、I/O 设备模型之ADC设备)

矜辰所致

RT-Thread 8月月更 ADC

图灵8月书讯 | 10 本新书上市,本本精选

图灵社区

新书推荐

解决 NGINX LDAP 参考实施中的安全问题

NGINX开源社区

nginx HTTP 安全漏洞 ldap 身份验证

MobTech ShareSDK 高级接口及配置

MobTech袤博科技

android MobTech袤博科技 sharesdk

教你使用Jupyter可视化查询语句的语法树

华为云开发者联盟

人工智能

打破数字化盐碱地:传统型企业如何踏稳数字化转型第一步

科技怪咖

左邻云安全 | 全程守护,让园区安全看得见

科技怪咖

马蹄链Dapp系统开发部署技术

薇電13242772558

dapp

何去何从的并行计算

博文视点Broadview

从零到一,教你搭建「以文搜图」搜索服务(一)

Zilliz

人工智能 机器学习 深度学习

阿里云 ACK 容器服务生产级可观测体系建设实践

阿里巴巴中间件

阿里云 容器 云原生 可观测

从实验室到用户桌面,深度解析AI 落地实践之路

云智慧AIOps社区

人工智能 机器学习 AI 算法实践 智能运维AIOps

Kruise Rollout v0.2.0 版本发布:支持 Gateway API、StatefulSet 分批发布等能力

阿里巴巴中间件

阿里云 开源 容器 云原生 OpenKruise

Fluint——针对Flex的单元测试工具_Java_Moxie Zhang_InfoQ精选文章