`
vwpolo
  • 浏览: 190864 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SWTBot-Eclipse的GUI测试工具

阅读更多

   SWTBot是一个用于SWT、基于Eclipse应用的GUI测试工具,提供了简化访问SWT和Eclipse组件的API,而且SWTBot可以运行在所有平台上运行的SWT。测试脚本可以通过Ant任务运行,因此你可以把测试集成到持续集成构建中。SWTBot基于Apache 2许可协议。
   SWTBot可以用来模拟用户鼠标的点击行为,我们可以在程序中预先设定鼠标的点击顺序,之后SWTBot就会安装设定的顺序进行操作。SWTBot测试运行配置和JUnit非常相似,测试方法结构都差不多,实际上它继承自JUnit的方法,编写SWTBot的测试代码方式和JUnit一样。
   SWTBot封装了访问SWT和Eclipse组件的方法,使用起来非常简单,比如,我们想在Eclipse的包导航器中删除一个项目,可以通过下面这种方式进行:

  

SWTEclipseBot bot = new SWTEclipseBot();
SWTBotView view = bot.view("Package Explorer");
SWTBotTree tree = new SWTBotTree((Tree) bot.widget(widgetOfType(Tree.class), view.getWidget()));
tree.setFocus();
tree.select(projectName);
bot.menu("Edit").menu("Delete").click();

   这样SWTBot执行上面的代码就会触发删除工程的操作,会弹出删除对话框,这时候,我们也可以通过SWTBot获得当前弹出的确认删除对话框,对这个对话框进行判断,选择对应的操作,假如我们的Eclipse是使用3.3版本的:

 

SWTBotShell shell = bot.shell("Confirm Project Delete");
shell.activate();
Button button = (Button) bot.widget(widgetOfType(Button.class), shell.widget);
new SWTBotRadio(button).click();
bot.button("Yes").click();
bot.waitUntil(Conditions.shellCloses(shell));

   对于Eclipse 3.4,删除的确认对话框和Eclipse3.3不一样,我们可以通过下面这段代码实现:

 

SWTBotShell shell = bot.shell("Delete Resources");
shell.activate();
Button button = (Button) bot.widget(widgetOfType(Button.class), shell.widget);
new SWTBotCheckBox(button).select();
bot.button("OK").click();
bot.waitUntil(Conditions.shellCloses(shell));

 

  这样的话就可以删除那个项目了。如果想得到对应的视图,可以通过new SWTEclipseBot().view(视图名称)获得,想获得名称为“OK”的对话框可以通过new SWTEclipseBot().botton("OK")得到,是不是挺简单的,不过我试用了下,我想在Eclipse的包视图中启动RCP项目的话好像不行,因为SWTBot是先启动Eclipse然后在调用SWTBot的测试方法,直接就跳过了RCP的启动,不知道这是不是一个Bug?,很奇怪,或许是我操作的方式不对。

    以前SWTBot是挂在 SourceForge.net下面的,在过去一年SWTBot发展的很好,所以SWTBot已经移到了Eclipse.org下面。主页的地址是: http://www.eclipse.org/swtbot/

分享到:
评论
1 楼 ninegsf 2013-07-30  
楼主现在还记得SWTBot里的用法吗?

相关推荐

Global site tag (gtag.js) - Google Analytics