5

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

4

2 回答 2

4

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

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

于 2011-09-09T16:32:10.077 回答
2

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

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

于 2011-09-09T17:00:47.090 回答