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

使用 JRuby 测试 Java GUI

  • 2008-10-31
  • 本文字数:2032 字

    阅读完需:约 7 分钟

与单元测试相比,GUI 测试要耗时和困难的多,即使是在测试驱动的开发团队中,因此也常被忽视。让我们来看一看两个为 SWT 和 Swing 应用创建 GUI 测试的解决方案,它们均宣称能够使 GUI 测试工作更加简单。

为什么 GUI 测试难以编写?比起简单的实例化一个类,GUI 通常需要更多的创建工作,同时因为 GUI 交互是异步的而且涉及到鼠标操作,所以难以模拟 用户行为。GUI 测试的一个方法是提供一个交互录制器,监控测试人员,创建一个以后能够重用的脚本。这种方法存在若干问题:根据录制格式的不同,脚本在 UI 改变之后可能难以修改;很自然地,测试优先的开发模式不可行。

另外一种选择是编程创建 GUI 测试。这依赖于框架是否适合编写测试。找到一个能够识别 UI 元素和相关设施,并能等待异步操作结束的简单并有效办法至关重要。 SWTBot Marathon 都用于为 Java 应用编写 GUI 测试。SWTBot 使用 Java,所以存在使用 JRuby 的可能性。Marathon 则更进一步,直接使用 JRuby(或者 Jython)编写测试脚本。

SWTBot

SWTBot 是一个用于 SWT、基于 Eclipse 应用的测试工具,提供了简化访问 SWT 和 Eclipse 组件的 API。测试脚本可以通过 Ant 任务运行,因此你可以把测试集成到持续集成构建中。SWTBot 基于 Apache 2 许可协议。

InfoQ 采访了 SWTBot 的开发人员——Ketan Padegaonkar。Ketan 在 ThoughtWorks 工作,因此我们询问了有关 JRuby 和 DSL 的发展动向:

毫无疑问,这些都在 SWTBot 的日程表上。SWTBot 仍然缺少大量 API,我们正在原来的基础上不断进步。SWTBot 的大部分功能都是基于 Twist 开发团队的需求、反馈和 SWTBot 社区。目前还没有真正需要集成 JRuby 的理由。我相信这是因为没有太多人使用 JRuby 开发 SWT/Eclipse。所以,JRuby 集成目前还不在考虑中。

SWTBot 2.0(目前是 beta 版)组合了 FluentInterface 和微型的 DSL 来查询 widgets。我认为这是一种不断发展和提供足够句法支持而不使用完全 JRuby 方式的好办法。

SWTBot 也提供了一个录制器,目前它处在什么状态呢?

录制器只是为了体现概念而开发,所有没有投放太多的精力在上面。它对大多数控件都不支持,也不会录制所有操作,虽然添加这些支持很简单。录制器采用中间格式录制代码,类似于抽象语法树。这种表示随后会输出成你选择的语言,目前它支持 Java,但 Ruby 也是可以的。

还要注意:录制和回放不是编写测试的推荐方式(参见 TestingGUIApplications 录制 vs. 编码)。这主要是因为一个工作流(或者所有脚本)的完整脚本在被测应用发生微小改动之后需要重新录制。SWTBot 提倡采用 PageObject/ScreenObject 模式(或参见重用功能性测试)。

那么,未来有什么规划?

SWTBot 对于参与其中的每一个人来说在很多方面都是一个学习的历程。SWTBot 目前在进行第三次重写。我们在 2.0 版中改正了 1.x 版的很多错误。

我们移除了 Java 1.4 代码库以便使用 Java 1.5 的新功能,特别是泛型。我们也分解了 SWTBot 的一些子系统。这使得 SWTBot 更具扩展性,能够支持多页面编辑器、Eclipse 富表单编辑器和 GEF。

同时,申请把 SWTBot 移到 eclipse.org ,这可以方便更多用户访问 SWTBot,使所有人受益。

一些有关使用 SWTBot 测试的好技巧可以浏览 David Green 的博客文章“"Eclipse GUI Testing Is Viable With SWTBot ”。

Marathon

与 SWTBot 相反, Marathon 可以用于测试 Swing 应用。 Marathon 带有自己的编辑器和测试运行器,也支持调试和提供 Ant 任务。 Marathon 由 Bangalore 的 Jalian Systems 公司开发,基于 GNU LGPL 协议。我们采访了 Marathon 的主要维护者和开发人员 Dakshinamurthy Karra。

相比 SWT,已经有太多测试 Swing 应用的工具,所以我们询问是否计划支持 WST:

我们计划发布一个基于 Eclipse 的商业版本。由于各种原因推迟了。我们希望在未来几个月能够发布。作为一个团队,我们目前关注的是添加对 Web 测试的支持。根据需求的不同,我们随时准备添加对 SWT 的支持。但目前我们收到了更多支持 Web 应用的要求。

Marathon 支持 JRuby 和 Jython,为什么选择这两种语言?

Jython 是初期开发人员选择的语言。我们个人喜欢 Ruby,所以添加了对 JRuby 的支持。Marathon 架构支持插件式脚本模型。JVM 支持的任何语言(Groovy,Bean shell,Clojure)都可以被添加进去。

另一个偏爱 Ruby 的原因是可以创建 DSL。而且还计划(仍在萌芽阶段)添加基于关键字的测试

我们非常乐于看到社区能贡献出针对其他语言的支持。

看到 Marathon 的屏幕截图,感觉界面类似于 Eclipse,其中有什么联系吗?

我们正准备发布一个基于 Eclipse 的商业版本(暂定名 MarathonITE——Marathon 集成测试环境)。Eclipse 是我们的开发平台,这是 UI 类似 Eclipse 的一个原因。当我们需要实现一个功能的时候——我们通常会看看 eclipse 是如何实现的。

没有计划把 Marathon(开源版本)集成到某 IDE。

使用 JRuby(或者 Jython)测试是把动态语言偷偷用在传统开发环境的一个好机会。

你又是如何创建 UI 测试的呢?

查看英文原文: Java GUI Testing With JRuby

2008-10-31 23:071519
用户头像

发布了 501 篇内容, 共 255.9 次阅读, 收获喜欢 60 次。

关注

评论

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

win11基础 查看组件服务

万里无云万里天

win11 dcom

即时战略游戏:帝国时代2 for Mac 3.3.1769 中文移植版

你的猪会飞吗

mac软件下载 mac单机游戏

解读阿里云搜索开发工作台如何快速搭建AI语义搜索及RAG链路

阿里云大数据AI技术

人工智能 自然语言处理 大模型 rag

win11基础 家庭版升级为专业版的步骤

万里无云万里天

win11

蓝易云 - 免备案服务器托管是啥意思呀

百度搜索:蓝易云

云计算 运维 服务器 云服务器 高防服务器

数字样机:飞行器状态控制系统仿真

DevOps和数字孪生

数字样机

获取闲鱼商品详情api

api开发

LED租赁屏市场

Dylan

LED LED display LED显示屏 市场 舞台表演

AI 应用实战营 - 作业 八 - Coze制作Bot

德拉古蒂洛维奇

文献解读-临床试验-第二十二期|《新抗原负荷作为中国非小细胞肺癌II/III患者的预后和预测标志物》

INSVAST

基因测序 基因数据分析 临床试验

开发者必备:淘宝商品列表接口集成全攻略

tbapi

淘宝API接口 淘宝商品列表数据接口 淘宝商品列表数据采集

PHP 与淘宝详情 API 的融合:构建智能电商应用

api开发

华为云Serverless可观测性解决方案打造高效、可靠的云原生应用

华为云开发者联盟

云原生 可观测 华为云开发者联盟 企业号2024年7月PK榜

极盾故事|某农商行数据安全制度和数据分类分级建设

极盾科技

数据安全 数据分类分级

技术路线速通!用飞桨让京剧人物照片动起来

百度Geek说

百度飞桨 企业号2024年7月PK榜

win11基础 开启telnet功能

万里无云万里天

win11 Telnet

win11基础 组件服务 启动分布式com

万里无云万里天

win11 dcom

win11基础 telnet 检查rabbitmq server是否开启了1883端口

万里无云万里天

RabbitMQ win11 Telnet

深度解读GaussDB(for MySQL)与MySQL的COUNT查询并行优化策略

华为云开发者联盟

MySQL 数据库 华为云开发者联盟 企业号2024年7月PK榜

ETL数据集成丨将PostgreSQL数据库数据实时同步至PostgreSQL

RestCloud

postgresql 数据同步 ETL 数据集成平台 数据库同步

参加可观测性Observability Foundation认证培训,您有哪些收益?

雅菲奥朗

可观测性 可观测性认证

AI 应用实战营 - 作业 八 - Coze 制作 Bot - 2

德拉古蒂洛维奇

蓝易云 - Ubuntu下安装nginx服务,实现通过URL读取ubuntu下图片

百度搜索:蓝易云

nginx Linux ubuntu 运维 云服务器

蓝易云 - Linux:工具(vim,gcc/g++,make/Makefile,yum,git,gdb)

百度搜索:蓝易云

云计算 Linux 运维 yum 云服务器

蓝易云 - Ceph入门到精通-sysctl参数优化

百度搜索:蓝易云

云计算 运维 Ceph 云服务器 高防服务器

得物App弱网诊断探索之路

得物技术

ios android 企业号2024年7月PK榜

报名SRE培训,选择哪家培训机构?

雅菲奥朗

SRE SRE培训 SRE认证

蓝易云 - 用云服务器搭建网站怎么弄的

百度搜索:蓝易云

云计算 Linux 运维 搭建网站 搭建网站云服务器

极限科技闪耀 2024 可信数据库发展大会,多款自研产品引领搜索技术新纪元

极限实验室

信通院 极限科技 数据库发展大会

从0到1:理发店预约剪发小程序开发笔记(上)

CC同学

崖山异构数据库迁移利器YMP初体验-Oracle迁移YashanDB

YashanDB

yashandb 崖山数据库 崖山DB

使用JRuby测试Java GUI_Java_Mirko Stocker_InfoQ精选文章