我使用a GUI test编写SWTBot来测试Extract Method重构。我使用editor.selectRange()
来选择要提取到方法中的语句。但是,当我运行单元测试时,Extract Method重构菜单项被禁用。因此,SWTBot无法调用重构。
当我们更改org.eclipse.jdt.ui.actions.ExtractMethodAction
以便始终启用“Extract Method ...”菜单项时,我们的SWTBot会通过。但是,SWTBot应该让我们选择菜单项而不破解org.eclipse.jdt.ui
插件。
包含上述单元测试的整个项目是available at github。我还在the Eclipse forum for SWTBot和SWTBot bug tracking system上报告了此问题。但是,我们还没有收到论坛的解决方案。
答案 0 :(得分:1)
也许您必须刷新任何待处理事件才能启用菜单。在尝试单击菜单之前添加此循环:
while(Display.getDefault().readAndDispatch());
[编辑]我认为问题是菜单是通过扩展点或条件启用的。检查菜单或基础操作的所有plugin.xml文件以及启用它的条件。
要触发条件,您可能必须通知工作台有关新选择的信息。查看http://www.eclipse.org/articles/Article-WorkbenchSelections/article.html和http://www.eclipse.org/articles/article.php?file=Article-action-contribution/index.html