HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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:112064
用户头像

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

关注

评论

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

软件产品的信息安全问题

Interstate5

软件开发 信息安全

软件产品信息安全 - 数据分类

Interstate5

软件开发 信息安全 数据分类

webpack入门(一)

子铭

权威与边界

伯薇

权威 边界 BART 工作方式

模块化设计思想产品设计应用

燕陈华

产品设计 模块化流程 流程图

Spring整合MyBatis详细分析

Java收录阁

mybatis

《零基础学 Java》 FAQ 之 4-关于补码,多说两句

臧萌

Java 补码

《你好架构师之 压榨硬件价值的利器容器(Docker)》

再见小飞侠

高仿瑞幸小程序 05 更正轮播组件的高度计算

曾伟@喵先森

小程序 微信小程序 大前端

一口气带你踩完五个 List 的大坑,真的是处处坑啊!

楼下小黑哥

Java 踩坑 后端 集合

用 Electron 打包语雀

封不羁

Java Electron

程序员必需清楚的进程和线程

小趴菜~

线程 操作系统 进程

白话计算机网络通信过程

WB

程序员 计算机网络

软件产品开发流程

Interstate5

软件开发 软件开发流程

Java内存模型和volatile、final等关键字

麻瓜镇

Java 多线程

程序员的晚餐 | 5月9日 炖蹄髈

清远

程序员

Redis学习笔记(集合类型)

编程随想曲

redis

面向对象是什么

落英亭郎

面向对象

《零基础学Java》 FAQ 之 零-这门课适合我吗?

臧萌

Java 编程语言

《如何阅读一本书》读书心得

兆熊

读书笔记

Java小想法: JDK许可证

X.F

Java 编程语言

Android Studio NDK 编译 Bsdiff 库

码农亮哥

android-studio ndk bsdiff

从nacos客户端的TIME_WAIT说起

捉虫大师

Java TCP nacos

《零基础学 Java》 FAQ 之 3-为什么计算机里的浮点数不精确

臧萌

Java 浮点数

给在线教学泼点冷水

启润

在线教育 基础教育

人人都应该懂的加密算法 - 公钥加密

麦叔

对称加密 加密解密 信息安全 公钥加密

小棉袄,最终却没有变成你的防弹衣

小天同学

个人成长 成长 感悟 母亲节 感恩

LeetCode 1232. Check If It Is a Straight Line

liu_liu

LeetCode

产品周刊 | 第 14 期(20200510)

八味阁

产品 产品经理 产品设计

HTTP 升级 HTTPS 全过程记录

猴哥一一 cium

https 证书

大话区块链和比特币的技术原理

麦叔

比特币 区块链 数字货币 加密货币 加密解密

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