Désenregistrement des références aux objets de test

Les méthodes de script auxiliaire (Helper) utilisent la mappe d'objets de test pour désigner un objet dans l'application testée. Chaque fois qu'une méthode est appelée sur un objet, Functional Tester recherche cet objet dans la mappe. Cependant, il peut arriver que cette recherche systématique ne soit pas souhaitable.

Par exemple, si vous souhaitez appeler de nombreuses méthodes directement sur le même objet, rechercher à chaque fois l'objet avec la méthode find est une perte de temps. Vous pouvez utiliser la méthode TestObject.find pour rechercher un objet sans que Functional Tester appelle pour autant des méthodes sur cet objet. TestObject.find renvoie un nouveau TestObject contenant une sorte de référence différente à l'objet dans l'application testée. Cette référence est parfois appelée référence liée (bound) ou non mappée.

Une référence liée conserve l'accès à l'objet dans l'application testée jusqu'à ce qu'elle soit explicitement désenregistrée. Functional Tester désenregistre les références liées seulement une fois que la lecture entière a pris fin, et non lorsque le script se termine. Tant qu'une référence liée à un objet subsiste, Functional Tester peut empêcher la libération complète de cet objet dans l'application. Ainsi, un objet Java n'est pas collecté par le récupérateur de place (garbage collector) tant qu'il existe une référence liée à cet objet. Par conséquent, vous devez explicitement désenregistrer les références liées que vous créez dès que vous n'en avez plus l'utilité.

Dans un script Functional Tester normal, les seuls TestObjects qui contiennent des références mappées sont les méthodes des scripts auxiliaires. Tous les autres TestObjects contiennent des références liées et doivent, par conséquent, être désenregistrés. Par exemple, la méthode TestObject.getTopParent est explicitement déclarée pour renvoyer un TestObject. D'autres méthodes sont déclarées pour renvoyer un java.lang.Object, mais elles peuvent renvoyer un TestObject qui doit ensuite être désenregistré. C'est le cas, par exemple, de TestObject.getProperty.

La classe RationalTestScript contient plusieurs méthodes qui servent à supprimer les références aux TestObjects, parmi lesquelles com.rational.test.ft.script.RationalTestScript.unregister et unregisterAll. Pour plus d'informations sur ces méthodes, voir le Guide de référence des API de Functional Tester.

Les objets renvoyés par l'application testée qui ne sont pas des TestObjects représentent des valeurs. Le type d'un tel objet est appelé classe de valeur. Une classe de valeur est une copie d'un objet dans l'application testée, et non une référence à cet objet. Les classes java.lang.Integer et java.awt.Rectangle en sont des exemples courants.

L'enregistreur et les assistants de Functional Tester génèrent seulement du code qui renvoie des classes de valeur. Par exemple, une propriété que vous voyez dans le jeu d'essai (test case) Object Properties est une propriété dont la valeur est une classe de valeur. Vous pouvez appeler TestObject.getNonValueProperties pour trouver les propriétés de référence disponibles pour un objet particulier. De même, vous pouvez appeler TestObject.getMethods pour obtenir la liste de toutes les méthodes qu'il est possible d'invoquer en appelant TestObject.invoke.

Soyez prudent lorsque vous manipulez directement des TestObjects contenant des références aux objets dans l'application testée, car celle-ci peut devenir instable. Désenregistrez ces TestObjects dès que possible.


Retour d'informations