Posso chiamare Toolsapi dal codice nel Dunit Guitestring?
Domanda
Esiste un modo per inizializzare la variabile globale Borlandideservices nell'unità strumenti in modo che possa essere utilizzato dal codice 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;
In questo esempio, la variabile del progetto sarà nulle perché la variabile Borlandideservices non è inizializzata. GuiteStrunner è gestito dall'IDE in modalità debug.
Soluzione
No perché BorlandIDEServices
è disponibile solo dal codice effettivamente in esecuzione all'interno (come parte del) IDE stesso. L'esecuzione del codice in applicazioni esterne tramite il debugger è ancora in esecuzione esternamente; Non fanno parte dell'IDE, anche se il debugger è, e quindi non hanno accesso al ToolsAPI
funzionalità.
Strumenti come Gexperts In realtà si collega all'IDE e diventa parte di esso, motivo per cui possono accedere ToolsAPI
interfacce. Questo non è il caso di GUITestRunner
; È un'applicazione esterna che sia in esecuzione sotto il debugger o meno.
Altri suggerimenti
L'unico modo in cui posso immaginare (non l'ho testato) richiederebbe un plug -in OTA che comunica con il Guitestrunner su alcune comunicazioni di processo.
Ad esempio, il plugin apre un socket e riceve comandi come "apri file" a volte.pas "nell'editor" dall'applicazione Guitestrunner.