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

mjn*_*mjn 5 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;
Run Code Online (Sandbox Code Playgroud)

在此示例中,Project变量将为nil,因为未初始化BorlandIDEServices变量.GUITestrunner在IDE中以调试模式运行.

Ken*_*ite 4

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

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