写点什么

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

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

关注

评论

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

零基础应该如何学习爬虫技术?

极客时间

Python 编程 爬虫

什么是物联网中台

老任物联网杂谈

物联网中台 IOT Platform 物联网平台

一个工程师向电信公司的维权

D

记一次spring注解@Value不生效的深度排查

捉虫大师

spring Spring Boot dubbo

Apache Beam 大数据处理一站式分析

李孟聊AI

Java 大数据 数据中台 数据交换 Beam

Ledge:这可能是距今最好的『DevOps + 研发效能』知识平台

Phodal

DevOps 敏捷开发 软件开发 研发效能

如何在非 sudo 用户下运行 docker 命令?

愚一

Docker DevOps

IPFS 星际传输协议的入门(二)

AIbot

区块链 分布式数据库

当dubbo多注册中心碰上标签路由

捉虫大师

dubbo

Docker运行常用软件:MySQL,Redis,Nginx,RabbitMQ,Neuxs,Gitlab

读钓

MySQL nginx Docker gitlab

在Kubernetes上运行SpringBoot应用

铁花盆

Docker Kubernetes Spring Boot

都在说实时数据架构,你了解多少?

Apache Flink

大数据 flink 流计算 实时计算

SpringBoot中如何优雅的使用多线程

读钓

Java spring Spring Boot

思维导图学《Linux性能优化实战》

Yano

Linux 后端

nacos的一致性协议distro介绍

捉虫大师

nacos

项目实施要避免哪些坑?

顾强

项目管理

18个PPT,29个提问解答,都在这儿啦!

Apache Flink

大数据 flink 流计算 实时计算

一行代码实现网站可编辑,并解决网站禁止复制的限制

wangkx

复制 破解 DOM

读书·行路·问心·求道

黄崇远@数据虫巢

读书笔记 个人成长 读书

以为是青铜,没想到是王者的dubbo标签路由

捉虫大师

dubbo

Linux系统优化

桥哥技术之路

Linux

LeetCode 前1000题二叉树题目系统总结

Yano

面试 算法 LeetCode 二叉树 刷题

MacOS配置网络命令

编程随想曲

macos network

XOR异或运算在计算机中的应用

wangkx

XOR 异或运算 对称加密

Python 有哪些黑魔法?

极客时间

Python 编程语言

centos7.6操作系统安装

桥哥技术之路

Linux

Sentinel在docker中获取CPU利用率的一个BUG

捉虫大师

Java sentinel cpu

一次漫长的dubbo网关内存泄露排查经历

捉虫大师

dubbo 内存泄露

skywalking内存泄露排查

捉虫大师

dubbo 内存泄露

身为程序员,怎么接私活赚外快?

爱看书的小代码

用jdk8的stream实现斐波那契数列

编号94530

jdk stream 斐波那契 fibonacci

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