Могу ли я вызвать 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.