Abbot,一个可以自动化的测试 SWT 和 Eclipse 插件用户界面的测试框架。
1. 从CVS上下载
2. 将abbot转换为插件,使用PDE工具
3. 修改abbot.swt和abbot.eclipse的类路径和依赖项,保证无错误
4. 修改运行的VM参数,添加:
-Djava.library.path=D:\eclipse\configuration\org.eclipse.osgi\bundles\104\1\.cp
运行实例(example下)
1. 测试器(Tester):执行不同的UI构件测试,可用于触发UI构建的相应动作。当出现widget not found,可能是菜单路径不对。
2. “等待-触发”方式,保证测试的顺序满足我们的要求。启动线程等待对话框或者向导,然后执行对它们的测试是使用abbot的常用方法。
3. 查找起(Finder)要与匹配器(Matcher)一起协同工作,在给定的UI层体寻找目标构件,再让构件执行相应的动作,就需要用到相应构件的测试器。
4. 测试代码是在一个线程中访问UI的构件,要将这些代码放在runnable 的run方法体内通过abbot.tester.swt.Robot.syncExec执行。可使用Robot.delay(1000)保证一定的延迟,保证你可以看得到。
用户界面测试的常见形式包括:判断构件是否正确形成、构件的状态和动作是否符合预定的需求、构件的数据是否满足测试的要求等。
1. 测试器:为几乎所有的SWT构件提供相应的测试器,不存在的复合构件由简单构件组成,例如section 的标题栏是一个Label,可以先查找到label,再使用actionClick来打开或关闭一个section. Java.awt.Robot可生成操作系统的事件和消息来创建自动测试,自运行的演示,让应用来控制鼠标和键盘。
2. 查找器和匹配器:查找器会遍历hierarchy上的所有UI构件,匹配器,例如:TextMatcher对text信息查找,而NameMatcher对所属类和对象名进行查找。
3. 测试代码的同步执行:在等待线程中,如果执行UI构件相关操作的断言,就应当将其封装在一个runnable里面使用abbot.tester.swt.Robot.syncExec保证其同步的执行,
4. Abbot默认的等待时间是一分钟,在abbot.tester.swt.Robot中定义,超过时间后,会抛出WaitTimeOutError异常。当你的等待不是对话框或者构件的出现(如等待服务器返回的数据)可使用abbot.tester.swt.Robot的“wait(Condition condition)”方法,实现自己的condition接口