【问题标题】:Why is a menu item disabled when using SWTBot?为什么在使用 SWTBot 时会禁用菜单项?
【发布时间】:2010-09-14 05:01:05
【问题描述】:

我已经使用SWTBot 编写了a GUI test 来测试提取方法重构。我使用editor.selectRange() 选择要提取到方法中的语句。但是,当我运行单元测试时,提取方法重构菜单项被禁用。因此,SWTBot 无法调用重构。

当我们更改org.eclipse.jdt.ui.actions.ExtractMethodAction 以便始终启用“提取方法...”菜单项时,我们的 SWTBot 将通过。但是,SWTBot 应该让我们选择菜单项,而不需要破解 org.eclipse.jdt.ui 插件。

包含上述单元测试的整个项目是available at github。我还在the Eclipse forum for SWTBotSWTBot bug tracking system 上报告了这个问题。但是,我们还没有收到来自论坛的解决方案。

【问题讨论】:

  • 你的意思是 editor.setSelection()?因为 getSelection() 不会选择任何东西...
  • @Zoltán Ujhelyi,我的意思是 selectRange()。我修正了问题陈述。

标签: eclipse unit-testing user-interface gui-testing swtbot


【解决方案1】:

也许您必须刷新所有未决事件才能启用菜单。在尝试单击菜单之前添加此循环:

while(Display.getDefault().readAndDispatch());

[编辑] 我认为问题在于菜单是通过扩展点或条件启用的。检查菜单或基础操作的所有 plugin.xml 文件,以及在什么条件下启用。

要触发条件,您可能必须通知工作台有关新选择的信息。检查http://www.eclipse.org/articles/Article-WorkbenchSelections/article.htmlhttp://www.eclipse.org/articles/article.php?file=Article-action-contribution/index.html

【讨论】:

  • @Aaron Digulla 感谢您的建议。我们试过了。但是,它对我们不起作用,因为提取方法重构菜单未启用。
  • 啊...我想我知道这是从哪里来的。查看我的编辑。
  • 下面是在org.eclipse.jdt.ui/plugin.xmlorg.eclipse.ui.actionSets扩展点中如何设置Extract Method Refactoring<action definitionId="org.eclipse.jdt.ui.edit.text.java.extract.method" label="%Refactoring.extractMethodAction.label" retarget="true" menubarPath="org.eclipse.jdt.ui.refactoring.menu/codingGroup" id="org.eclipse.jdt.ui.actions.ExtractMethod"> </action>
  • 扩展似乎没有指定菜单启用的条件。你指的是plugin.xml吗?
  • 是的。我认为您的问题是您需要 Eclipse 来运行条件。不知道它是如何工作的。您是否查看过其他插件的测试用例,尤其是 JDT 中测试重构的那些插件?
猜你喜欢
  • 1970-01-01
  • 2011-01-11
  • 2014-10-09
  • 2020-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多