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

Delphi 我可以从DUnit GuiteRunner中的代码调用ToolsAPI吗?,delphi,dunit,opentools,Delphi,Dunit,Opentools,是否有方法在ToolSAPI单元中初始化全局变量Borlandedesvices,以便可以从DUnit GuiteRunner代码中使用它 procedure TGUITestRunner.FailureListViewClick(Sender: TObject); var Project: IOTAProject; begin if FailureListView.Selected <> nil then begin TestTree.Selected := T

是否有方法在ToolSAPI单元中初始化全局变量Borlandedesvices,以便可以从DUnit GuiteRunner代码中使用它

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;
procedure TGUITestRunner.FailureListViewClick(发送方:TObject);
变量
项目:物联网项目;
开始
如果FailureListView.Selected为零,则
开始
TestTree.Selected:=TTreeNode(FailureListView.Selected.data);
//打电话给OTA
项目:=ToolsAPI.GetActiveProject;
ShowMessage(Project.ProjectType);
结束;
结束;

在本例中,项目变量将为nil,因为BorlandIDEServices变量未初始化。GuiteRunner是在调试模式下从IDE内部运行的。

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


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

我能想象的唯一方式(没有测试过它)是需要一个OTA插件,它通过一些进程间通信与GuiteRunner进行通信


例如,该插件打开一个套接字,并从GUITestrunner应用程序接收诸如“open file”SomeTests.pas“in the editor”之类的命令。

或者,您可以直接将DUnit合并到插件中,在(可固定的)中执行测试我一直希望能够有一个DUnit Exe将测试结果通过管道传输到DUnit插件,并显示在工具窗口中。使用DUnit DLL(并加载到Delphi地址空间)充满危险,如果您的测试不好,可能会杀死Delphi。