2011-09-09 41 views
5

是否有辦法在ToolSAPI單元中初始化全局變量BorlandIDEServices,以便可以從DUnit GUITestrunner代碼中使用它?我可以從DUnit GUITestrunner中的代碼調用ToolsAPI嗎?

procedure TGUITestRunner.FailureListViewClick(Sender: TObject); 
var 
    Project: IOTAProject; 
begin 
    if FailureListView.Selected <> nil then 
    begin 
    TestTree.Selected := TTreeNode(FailureListView.Selected.data); 

    // call OTA 
    Project := ToolsAPI.GetActiveProject; 
    ShowMessage(Project.ProjectType); 

    end; 
end; 

在此示例中,Project變量將爲零,因爲BorlandIDEServices變量未初始化。 GUITestrunner在調試模式下從IDE內運行。

回答

4

不,因爲BorlandIDEServices只能從實際在IDE內部(作爲其一部分)運行的代碼提供。通過調試器在外部應用程序中執行的代碼仍在外部運行;它們不是IDE的一部分,即使調試器是,因此也無法訪問ToolsAPI功能。

GExperts這樣的工具實際上插入IDE併成爲它的一部分,這就是爲什麼他們可以訪問ToolsAPI接口。 GUITestRunner不是這種情況;它是一個外部應用程序,無論它是否在調試器下運行。

2

我能想象的唯一方法(沒有測試過)需要一個OTA插件,它通過一些進程間通信與GUITestrunner通信。

例如,插件打開套接字並從GUITestrunner應用程序接收命令,如'在編輯器中打開文件'SomeTests.pas''。

+2

或者您可以直接在插件中包含DUnit,直接在IDE內以(可停靠)形式執行測試。 –

+1

我一直希望能夠將DUnit Exe管道測試結果傳送到DUnit插件,並顯示在工具窗口中。使用DUnit DLL(並加載到Delphi地址空間中)充滿了危險,如果你的測試不好,可能會導致Delphi死機。 – Nat

相關問題