Génération du code de test

Lors de la phase d'initialisation d'une requête de génération de code, un objet qui étend la classe LTTestExtensionPreferences est créé via l'appel de tous les plug-ins implémentant le point d'extension com.ibm.rational.test.lt.codegen.core.codegenProtocolExtension par le biais de leur méthode supportFeatures().

Pourquoi et quand exécuter cette tâche

La méthode supportFeatures() extrait la liste des fonctions de l'objet de modèle de test, et si elle détermine que ces fonctions sont prises en charge, elle renvoie l'objet LTTestExtensionPreferences approprié. L'objet renvoyé implémente l'interface com.ibm.rational.test.lt.codegen.core.config.IExtensionPreferences, qui constitue la partie publique de la classe LTTestExtensionPreferences.

La génération de code est contrôlée par la classe com.ibm.rational.test.lt.codegen.core.CodeGenerator. Cette classe utilise un objet EclipseCodegenConfiguration qui stocke les mappes de hachage pour les traducteurs, les adaptateurs d'élément de modèle et les modèles déterminés par type d'élément de langage. Des traducteurs spécifiques sont définis pour les éléments de test du conteneur, les pools de données et d'autres éléments propres au protocole et indépendants. Les éléments qui ne peuvent pas exister indépendamment sont convertis et deviennent des enfants des éléments qui les contiennent via la méthode translateChildren() du traducteur.

Le générateur de code détermine le traducteur approprié et appelle sa méthode getTranslationFor() pour l'élément de modèle donné.

La classe ElementAdapter et sa méthode getAdapterForType() détermine quel est l'élément de modèle de génération de code approprié pour l'élément de modèle de comportement donné.

Procédure

La traduction des éléments de test implique les étapes ci-dessous.

  1. Les éléments de test sont lus à partir du modèle de comportement et le traducteur approprié est déterminé pour chacun d'entre eux.
  2. L'objet d'élément de langage est créé pour l'élément et son modèle est déterminé.
  3. Les attributs d'élément sont lus à partir du modèle et les paramètres correspondants sont remplacés dans le modèle.

Résultats

La génération des éléments de langage de code est récursive et l'arborescence des éléments de langage contenant tous les niveaux d'éléments de test du modèle d'exécution est générée ; l'objet de modèle est instancié pour chacun d'entre eux et ils contiennent toutes les substitutions de test demandées. Pour l'implémentation de l'arborescence, les conteneurs d'éléments de langage sont utilisés en tant que noeuds. Les substitutions de modèle pour les conteneurs d'éléments de langage des paramètres qui définissent plusieurs éléments sont traitées par la classe LangElemCollectionValue.

Commentaires