2017-05-14 93 views
0

我正在探索使用SWTWorkbenchBot來在我的基於eclipse的項目自動化中使用。但是,嘗試獲取「控制檯」視圖時,看起來很奇怪。SWTWorkbenchBot無法找到「控制檯」視圖

SWTWorkbenchBot workbenchBot = new SWTWorkbenchBot(); 
String consoleTitle = "Console"; 
try { 
    workbenchBot.viewByTitle(consoleTitle).show(); 
    System.out.println("Got the Console view"); 
} catch (Exception e) { 
    for (SWTBotView view : workbenchBot.views()) { 
    System.out.println(view.getTitle() + "\t" + v.getTitle().equals(consoleTitle)); 
    } 
} 

從上面的代碼中,我假定的以下2種情況之一成立:

  • 要麼代碼將與「得到控制檯視圖」
  • 消息打印或消息「GOT退出控制檯視圖「消息未打印,因爲未找到」控制檯「視圖,並且引發了WidgetNotFoundException類型的異常,並且將執行catch中的代碼。輸出不應該包含標題「控制檯」或至少在所有視圖標題旁邊應打印false

令人驚訝的是,這沒有發生。消息「獲得控制檯視圖」未打印,但如果查看視圖列表,則會看到存在一行控制檯真實這意味着SWTWorkbenchBot無法使用方法.viewByTitle()獲取控制檯視圖,但是他知道通過檢查.views()內容存在。

上述代碼適用於任何視圖,但控制檯視圖除外。我在這裏做錯了什麼?提前致謝。

回答

1

如果我看看我正在運行的Eclipse,View被稱爲「Console(General)」。你真的不應該依賴任何人的名字,如果你有一個ID引用視圖的可能性,檢查follwing代碼段將工作

workbenchBot.viewById("org.eclipse.ui.console.ConsoleView").show();

只是一個旁註:你應該讓UI測試碼多一點強大的UI測試往往會因時序,用戶界面,重疊窗口等原因而失敗,因此很快就會失敗並明確說明測試失敗的原因。

[...] 
SWTBotView view = workbenchBot.viewByTitle(consoleTitle); 
assertNotNull("Console was not found", view); 
try { 
    view.show() 
} catch (Exception e) { 
    fail("Error occured while opening console") 
} 
[...] 
+0

有沒有視圖\ controls \內置ID的任何參考?你在哪裏找到「org.eclipse.ui.console.ConsoleView」? –

+1

您可以使用稱爲「Plugin-Spy」的便利工具。舉個例子,view-id只需在Eclipse IDE中打開視圖,然後按下Shift + Alt + F1即可。彈出窗口將顯示所需的信息。 –