2010-09-14 50 views
2

我寫了a GUI test使用SWTBot測試提取方法重構。我使用editor.selectRange()來選擇一個語句來提取一個方法。但是,當我運行單元測試時,Extract Method重構菜單項被禁用。因此,SWTBot無法調用重構。爲什麼使用SWTBot時菜單項被禁用?

當我們更改org.eclipse.jdt.ui.actions.ExtractMethodAction以便始終啓用「Extract Method ...」菜單項時,我們的SWTBot通過。但是,SWTBot應該讓我們選擇菜單項而不會黑客入侵org.eclipse.jdt.ui插件。

包含上述單元測試的整個項目是available at github。我也在the Eclipse forum for SWTBotSWTBot bug tracking system上報告過這個問題。但是,我們還沒有收到論壇的解決方案。

+0

你的意思是editor.setSelection()?因爲getSelection()不會選擇任何東西... – 2010-09-14 08:57:33

+0

@ZoltánUjhelyi,我的意思是selectRange()。我修復了問題陳述。 – reprogrammer 2010-09-14 16:53:19

回答

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

+0

@Aaron Digulla感謝您的建議。我們試了一下。但是,它不適用於我們,因爲提取方法重構菜單未啓用。 – reprogrammer 2011-01-04 19:55:08

+0

啊...我想我知道這是從哪裏來的。查看我的編輯。 – 2011-01-04 20:52:24

+0

以下是如何在'org.eclipse.jdt.ui/plugin.xml'的org.eclipse.ui.actionSets'擴展點中設置'Extract Method Refactoring'。 '<動作definitionId = 「org.eclipse.jdt.ui.edit.text.java.extract.method」 標籤= 「%Refactoring.extractMethodAction.label」 重定目標= 「真」 menubarPath =「org.eclipse .jdt.ui.refactoring.menu/codingGroup「 id =」org.eclipse.jdt.ui.actions.ExtractMethod「> ' – reprogrammer 2011-06-21 20:21:08

相關問題