¿Puedo llamar a ToolsApi desde el código en Dunit Guitestrunner?
Pregunta
¿Hay alguna manera de inicializar las variables globales BorlandIDeservices en la unidad de herramientas de herramientas para que pueda usarse desde el código 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;
En este ejemplo, la variable del proyecto será nula porque la variable Borlandideservices no se inicializa. El Guitestrunner se ejecuta desde el modo IDE en el modo de depuración.
Solución
No porque BorlandIDEServices
Solo está disponible en el código que realmente se ejecuta dentro (como parte) del IDE en sí. La ejecución del código en aplicaciones externas a través del depurador todavía se está ejecutando externamente; No son parte del IDE, a pesar de que el depurador es, y por lo tanto no tiene acceso al ToolsAPI
funcionalidad.
Herramientas como GEXPERTS En realidad, conectarse al IDE y convertirse en parte de él, por lo que pueden acceder ToolsAPI
interfaces. Este no es el caso con GUITestRunner
; Es una aplicación externa, ya sea que se ejecute bajo el depurador o no.
Otros consejos
La única forma en que puedo imaginar (no lo he probado) requeriría un complemento OTA que se comunique con Guitestrunner sobre alguna comunicación entre procesos.
Por ejemplo, el complemento abre un socket y recibe comandos como 'Abrir archivo' a ALGEESTS.pas 'en el editor' de la aplicación Guitestrunner.