Puis-je appeler ToolsAPI à partir du code dans DUnit GUITestrunner?
Question
Existe-t-il un moyen d'initialiser la variable globale BorlandIDEServices dans l'unité ToolSAPI afin qu'elle puisse être utilisée à partir du code 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;
Dans cet exemple, la variable Project sera nulle car la variable BorlandIDEServices n'est pas initialisée.GUITestrunner est exécuté depuis l'EDI en mode débogage.
La solution
Non, car BorlandIDEServices
n'est disponible qu'à partir du code fonctionnant réellement à l'intérieur (dans le cadre de) l'EDI lui-même.Le code exécuté dans des applications externes via le débogueur est toujours exécuté en externe;ils ne font pas partie de l'EDI, même si le débogueur le fait, et n'ont donc pas accès à la fonctionnalité ToolsAPI
.
Des outils comme GExperts se connectent réellement à l'EDI et en font partie, c'est pourquoi ils peuvent accéder aux interfaces ToolsAPI
.Ce n'est pas le cas avec GUITestRunner
;c'est une application externe, qu'elle s'exécute sous le débogueur ou non.
Autres conseils
La seule façon que je peux imaginer (je ne l'ai pas testé) nécessiterait un plugin OTA qui communique avec le GUITestrunner via une communication inter-processus.
Par exemple, le plugin ouvre une socket et reçoit des commandes comme "ouvrir le fichier" SomeTests.pas "dans l'éditeur" depuis l'application GUITestrunner.