Могу ли я вызвать ToolsAPI из кода в DUnit GUITestrunner?

Есть ли способ инициализировать глобальную переменную BorlandIDEServices в модуле ToolSAPI, чтобы ее можно было использовать из кода 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 ответа

Решение

Нет потому что BorlandIDEServices доступно только из кода, который фактически выполняется внутри (как часть) самой IDE. Код, выполняемый во внешних приложениях через отладчик, все еще выполняется извне; они не являются частью IDE, хотя отладчик и, следовательно, не имеют доступа к ToolsAPI функциональность.

Такие инструменты, как GExperts, на самом деле подключаются к IDE и становятся его частью, поэтому они могут получить к ним доступ ToolsAPI интерфейсы. Это не так с GUITestRunner; это внешнее приложение, работает ли оно под отладчиком или нет.

Единственный способ, которым я могу себе представить (не проверял), - это использовать OTA-плагин, который взаимодействует с GUITestrunner через некоторое межпроцессное взаимодействие.

Например, плагин открывает сокет и получает команды типа "открыть файл" SomeTests.pas в редакторе "из приложения GUITestrunner.

Другие вопросы по тегам