2011-09-09 19 views
5

Có cách nào để khởi tạo biến toàn cục BorlandIDEServices trong đơn vị ToolSAPI sao cho nó có thể được sử dụng từ mã DUitit GUITestrunner?Tôi có thể gọi ToolsAPI từ mã trong DUitit GUITestrunner không?

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; 

Trong ví dụ này, biến Dự án sẽ là không vì biến BorlandIDEServices không được khởi tạo. GUITestrunner được chạy từ bên trong IDE trong chế độ gỡ lỗi.

Trả lời

4

Không, bởi vì BorlandIDEServices chỉ có sẵn từ mã thực sự chạy bên trong (như là một phần của) bản thân IDE. Việc thực thi mã trong các ứng dụng bên ngoài thông qua trình gỡ lỗi vẫn đang chạy bên ngoài; chúng không phải là một phần của IDE, mặc dù trình gỡ lỗi là, và do đó không có quyền truy cập vào chức năng ToolsAPI.

Công cụ như GExperts thực sự cắm vào IDE và trở thành một phần của nó, đó là lý do tại sao họ có thể truy cập vào giao diện ToolsAPI. Đây không phải là trường hợp với GUITestRunner; nó là một ứng dụng bên ngoài cho dù nó đang chạy dưới trình gỡ lỗi hay không.

2

Cách duy nhất tôi có thể tưởng tượng (chưa thử nghiệm) sẽ yêu cầu một plugin OTA giao tiếp với GUITestrunner qua một số giao tiếp liên tiến trình.

Ví dụ: plugin mở ổ cắm và nhận lệnh như 'tệp mở' SomeTests.pas 'trong trình chỉnh sửa' từ ứng dụng GUITestrunner.

+2

Hoặc bạn có thể kết hợp trực tiếp DUnit trong plugin, thực hiện kiểm tra ở dạng (có thể gắn kết) từ bên trong IDE trực tiếp. –

+1

Tôi đã luôn luôn muốn có thể có một ống DUnit Exe kết quả kiểm tra đến một plugin DUnit, được hiển thị trong một toolwindow. Sử dụng một DLL DUnit (và tải vào không gian địa chỉ Delphi) là đầy nguy hiểm và có trách nhiệm giết Delphi nếu các xét nghiệm của bạn là xấu. – Nat