我可以从DUnit GUITestrunner中的代码调用ToolsAPI吗?

时间:2011-09-09 15:46:39

标签: delphi dunit opentools

有没有办法在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中以调试模式运行。

2 个答案:

答案 0 :(得分:4)

不,因为BorlandIDEServices仅可从IDE本身内部(作为其一部分)实际运行的代码中获得。通过调试器在外部应用程序中执行的代码仍在外部运行;它们不是IDE的一部分,即使调试器是,因此也无法访问ToolsAPI功能。

GExperts这样的工具实际上插入IDE并成为其中的一部分,这就是他们可以访问ToolsAPI接口的原因。 GUITestRunner不是这种情况;它是一个外部应用程序,无论它是否在调试器下运行。

答案 1 :(得分:2)

我能想象的唯一方法(尚未测试过)需要一个OTA插件,它通过一些进程间通信与GUITestrunner进行通信。

例如,插件打开一个套接字,并从GUITestrunner应用程序接收命令,如'编辑'中的'打开文件'SomeTests.pas'。