有没有办法在ToolSAPI单元中初始化全局变量BorlandIDEServices,以便可以从DUnit GUITestrunner代码中使用它?
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变量将为nil,因为未初始化BorlandIDEServices变量。 GUITestrunner在IDE中以调试模式运行。
答案 0 :(得分:4)
不,因为BorlandIDEServices
仅可从IDE本身内部(作为其一部分)实际运行的代码中获得。通过调试器在外部应用程序中执行的代码仍在外部运行;它们不是IDE的一部分,即使调试器是,因此也无法访问ToolsAPI
功能。
像GExperts这样的工具实际上插入IDE并成为其中的一部分,这就是他们可以访问ToolsAPI
接口的原因。 GUITestRunner
不是这种情况;它是一个外部应用程序,无论它是否在调试器下运行。
答案 1 :(得分:2)
我能想象的唯一方法(尚未测试过)需要一个OTA插件,它通过一些进程间通信与GUITestrunner进行通信。
例如,插件打开一个套接字,并从GUITestrunner应用程序接收命令,如'编辑'中的'打开文件'SomeTests.pas'。