使用SWTBot为您的eclipse应用创建自动化GUI测试用例 - 编程入门网
t 中都有对应的代理类,图 5 仅列出了一个按钮控件的示例,可以在 org.eclipse.swtbot.swt.finder.widgets 包下找到其他实现。您的 SWT 知识能 够帮助您很快的熟悉 SWTBot 的结构,图 6 是 SWT 和 SWTBot 对应类的结构对 比,SWT 中的 Widget 子类对应的代理类扩展了 AbstractSWTBot 抽象类, Control 子类对应的代理类扩展了 AbstractSWTBotControl 类。这些抽象类中实 现了一些测试中通用的方法,如模拟鼠标动作,检查控件状态等。
图 6. SWT 和 SWTBot 部分类的结构对比 使用SWTBot为您的eclipse应用创建自动化GUI测试用例(7)时间:2011-08-26 IBM 杨晓峰 仇璐验证点是测试中的一个重要组成部分,单单模拟操作并不能达到测试的目的, 我们需要针对关注的细节添加验证点。您可以利用 Junit 提供的传统断言方式, 也可以使用 SWTBot 额外提供的断言方法。针对 GUI 测试的特点,SWTBot 框架 在 SWTBotAssert 类中实现了部分断言方法,我们在 AddUpdateSiteTest 中验证 按钮状态就是利用了其提供的方法,图 7 提供了具体的介绍,您可以根据需要选 择常规验证和正则表达式验证等等。SWTBot 还提供了快照功能,在用例发生失败 的时候可以截取屏幕显示并保存到图片文件,这样您就可以直观的发现导致错误 的问题了。 图 7. SWTBot 断言方法 您在测试中,可能经常会遇到超时处理、等待其他线程状态等问题,传统的方 式是开发人员在代码里自己去处理线程的事务,这就无形中增加了学习的难度和 使用的风险。这种随意的方式,会带来潜在的问题,比如您自己调用线程 API 去 检查超时,一旦被测产品行为改变,例如因为不同的操作系统或者代码变更,这 时您需要去用例中调整超时的参数和代码,非常不便。SWTBot 可以帮您解决大部 分这种问题,您无需费神去操作线程的细节,图 8 就是对 SWTBot 的相关实现的 一个说明,通过 ICondition 接口和其实现类,SWTBot 提供了非常完善的操作方 式。如果目前的实现无法满足您的特定需要,也可以直接调用 Conditions 工厂 类中的方法,自己去创建条件实例。 图 8. SWTBot 的 IConditions 使用SWTBot为您的eclipse应用创建自动化GUI测试用例(8)时间:2011-08-26 IBM 杨晓峰 仇璐实际应用的角度 在具体的测试用例开发中,SWTBot 可以作为您操作 SWT 控件的一个入口,如 果您需要测试的是一个普通 eclipse 应用,那么可以参考前面介绍的 AddUpdateSiteTest 用例那样,从 SWTWorkbenchBot 对象开始,通过 Bot 对象 的方法找到目标控件,然后通过目标控件的代理对象,您就可以模拟鼠标、键盘 等操作了,也可以获取目标控件的状态信息。这里有一些小细节,一般来说,可 以认为 GUI 对象是树状结构的,通过指定恰当的父对象作为构造函数的参数,可 以更加快速地找到目标控件,您可以通过这一点提高 SWTBot 的查找效率。 SWTBot API 非常简单、易用,代码的可读性也非常好,您可以看下面图 9 中 列出的 SWTBot 查找 Button 控件代理类的方法,不要诧异,方法的功能就如您 看到的名字,其他的控件也同样可以通过 tooltip,text,ID 等简单条件查找。 由于完善的定位控件的方法,不需要了解查找器或者匹配器的细节就可以完成您 的大多数测试需求。 图 9. SWTBot 部分方法示例 在执行前面的测试用例的时候,如果您觉得执行的速度太快了,您可以定义脚 本回放的间隔等参数来控制执行速度。SWTBot 提供了简单易用的配置入口,您可 以通过修改 SWTBotPreferences 类的静态参数来达到这个目标,一些默认值也可 以通过设置环境变量来修改。 为方便生成脚本,常见的图形界面测试工具通常支持录制的方式来创建脚本, 即通过记录器(Recorder)来记录您的动作。SWTBot 有一个不是非常完 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |