【问题标题】:Can I call ToolsAPI from code in the DUnit GUITestrunner?我可以从 DUnit GUITestrunner 中的代码调用 ToolsAPI 吗?
【发布时间】:2011-09-09 15:46:38
【问题描述】:

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

【问题讨论】:

    标签: delphi dunit opentools


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 或者您可以直接将 DUnit 合并到插件中,直接在 IDE 中以(可停靠)形式执行测试。
      • 我一直希望能够让 DUnit Exe 将测试结果通过管道传输到 DUnit 插件,并显示在工具窗口中。使用 DUnit DLL(并加载到 Delphi 地址空间)充满危险,如果您的测试不好,很可能会杀死 Delphi。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 2014-05-10
      • 1970-01-01
      • 2010-10-30
      • 1970-01-01
      • 2020-09-02
      相关资源
      最近更新 更多