Могу ли я вызвать ToolsAPI из кода в DUnit GUITestrunner? - PullRequest
5 голосов
/ 09 сентября 2011

Существует ли способ инициализации глобальной переменной 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 ]

4 голосов
/ 09 сентября 2011

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

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

2 голосов
/ 09 сентября 2011

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

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

...