Tutoriel : Accès à un pool de données à partir d'un test JUnit


Objectifs :

Créer et accéder à un pool de données à partir d'un exemple d'application de test à l'aide de la fonction Eclipse TPTP (Test and Performance Tools Platform).

Temps requis

1 heure

Avant de commencer

Avant de commencer ce tutoriel, vous devez

  1. Installer Eclipse et la plateforme Eclipse TPTP (Test and Performance Tools Platform).
  2. Avoir une connaissance de base de la fonction de test JUnit. Pour plus d'informations sur la fonction de test JUnit, voir www.junit.org.
  3. Configurer et exécuter le contrôleur d'agent correspondant à votre version de plateforme TPTP. Pour plus d'informations, voir Getting started with the Agent Controller.


Description

Dans ce tutoriel, vous créez et testez une application nommée MyShoppingCart. A l'aide de la plateforme Eclipse TPTP (Test and Performance Tools Platform), vous développez des tests JUnit et créez un pool de données pour fournir des données à l'environnement de test.

Ce tutoriel vous guide tout au long de la procédure suivante :

  1. Création d'un exemple d'application utilisateur
  2. Configuration d'une suite de tests TPTP
  3. Création d'un pool de données et initialisation des données de test
  4. Modification des scénarios de test pour référencer un pool de données

Création d'un exemple d'application utilisateur


Dans cette procédure, vous développez une classe nommée MyShoppingCart. Dans les procédures suivantes, vous utiliserez la plateforme Eclipse TPTP (Test and Performance Tools Platform) pour développer un environnement de test correspondant.
  1. Créez un nouveau projet Java Eclipse.
    • A partir du menu Fichier, sélectionnez Fichier > Nouveau > Projet... La boîte de dialogue Nouveau projet s'affiche.
    • Dans la liste des assistants, sélectionnez Projet Java et cliquez sur Suivant. la page Création d'un projet Java s'affiche.
    • Entrez datapoolExample comme nom de projet et cliquez sur Terminer. Le projet datapoolExample s'affiche dans la vue Navigateur.
  2. Créez la classe MyShoppingCart.
    • Dans la vue Navigateur, cliquez avec le bouton droit de la souris sur le projet datapoolExample et sélectionnez Nouveau > Classe. La boîte de dialogue Nouvelle classe Java s'affiche.
    • Entrez MyShoppingCart dans la zone Nom.
    • Effacer l'option pour créer la méthode main public static void main(String[] args).
    • Cliquez sur Terminer. Le fichier MyShoppingCart.java s'affiche dans l'éditeur Java.
    • Indiquez les éléments suivants pour la source MyShoppingCart :
      import java.util.*;
      
      public class MyShoppingCart {
      
      	public Hashtable myFlowers;
      	
      	public MyShoppingCart() {
      	    
      		myFlowers = new Hashtable();
      		myFlowers.put("Orchid", new Double(5.99));
      		myFlowers.put("Tulip", new Double(1.99));
      		myFlowers.put("White Poinsee", new Double(6.99));
      		myFlowers.put("White Rose", new Double(9.99));
      		myFlowers.put("Geraniums", new Double(4.99));		
      	}
      	
      	public double itemCost(String itemName, int itemQuantity)
      	{
      	     Double price = (Double)myFlowers.get(itemName);
      		
      	     if (price != null) {
      	    	 return price.doubleValue()*itemQuantity;
      	     }
      	     
      	     return -1;	    	 	    	 	     		
      	}
      }
    • Sauvegardez MyShoppingCart.java. A partir du menu Fichier, sélectionnez Fichier > Sauvegarder.

Configuration d'une suite de tests TPTP


Dans cette procédure, vous développez une suite de tests pour la classe MyShoppingCart. A l'aide de la plateforme Eclipse TPTP, vous développez un test JUnit pour la méthode itemCost.
  1. Ouvrez la perspective Test.
    • A partir du menu Fichier, sélectionnez Fenêtre > Ouvrir la perspective > Autre.
    • Sélectionnez Test et cliquez sur OK. Le navigateur de test s'affiche.
  2. Créez un nouveau test JUnit TPTP.
    • Dans le navigateur de test, cliquez avec le bouton droit de la souris sur le projet datapoolExample et sélectionnez Nouveau > Elément de test...
    • Dans la boîte de dialogue Elément de test, sélectionnez Test JUnit TPTP et cliquez sur Suivant. La boîte de dialogue Nouveau scénario de test s'affiche, vous invitant à ajouter des bibliothèques JUnit. Cliquez sur Oui pour ajouter les bibliothèques JUnit.
    • Dans la page Nouveau code source du test JUnit, entrez shoppingCartTest_src dans la zone Nom. Dans la section Indiquez comment le comportement du test doit être modifié, indiquez l'option Dans l'éditeur de test (valeur par défaut).
    • Cliquez sur Terminer. L'éditeur de test JUnit TPTP s'affiche, avec la suite de tests shoppingCartTest_src. L'onglet Présentation comprend la description du test, des informations sur la source et une liste de méthodes de test. Aucune méthode n'est définie actuellement. Pour ce tutoriel, l'éditeur de test JUnit TPTP génère des méthodes de raccord de sorte à ce que l'option Implémenter le comportement du test en tant que code dans la section Informations source soit décochée. Pour plus d'informations, voir Editeur de suite de tests JUnit.
  3. Ajouter les méthodes testItemCost et testShoppingCartConstructor.
    • Dans l'onglet Méthodes de test, cliquez sur Ajouter. Un nom par défaut s'affiche pour votre test.
    • Ajoutez la méthode testItemCost. Dans la zone Nom, entrez testItemCost comme nom du nouveau test. Dans la zone Description, entrez Test pour la méthode MyShoppingCart.itemCost(String, int).
    • Ajoutez la méthode testShoppingCartConstructor. Dans l'onglet Méthodes de test, cliquez sur Ajouter. Dans la zone Nom, entrez testShoppingCartConstructor comme nom du nouveau test. Dans la zone description, entrez Test pour le constructeur MyShoppingCart.
  4. Configurez le comportement d'exécution du test.
    • Ajoutez une boucle d'exécution de test. Dans l'onglet Comportement, cliquez sur Ajouter... > Boucle. Dans la zone Nom, entrez Loop_MyShoppingCart. Dans la zone Nombre d'itérations, tapez 1 (valeur par défaut).
    • Ajoutez l'appel testShoppingCartConstructor. Sélectionnez Loop_MyShoppingCart et cliquez sur Ajouter... > appel. La boîte de dialogue Appel de test s'affiche. Sélectionnez testShoppingCartConstructor et cliquez sur OK.
    • Ajoutez un appel testItemCost. Sélectionnez Loop_MyShoppingCart et cliquez sur Ajouter... > appel. La boîte de dialogue Appel de test s'affiche. Sélectionnez testItemCost et cliquez sur OK.
    • Sauvegardez la suite de tests. A partir du menu Fichier, sélectionnez Fichier > Sauvegarder.

      Remarque : la commande Sauvegarder entraîne la création de raccords de méthode de test par l'éditeur de test JUnit TPTP dans shoppingCartTest_src.java.
  5. Entrez le code des méthodes de test JUnit générées : testShoppingCartConstructor et testItemCost.
    • Ouvrez la perspective Java. Dans le menu Fichier, sélectionnez Fenêtre > Ouvrir la perspective > Autre... > Java.
    • Ouvrez shoppingCartTest_src.java. Dans le navigateur, ouvrez le dossier du projet datapoolExample et faites un double clic sur shoppingCartTest_src.java. Le contenu du fichier shoppingCartTest_src.java s'affiche dans l'éditeur Java, y compris le code correspondant à la configuration et à l'exécution de la suite de test ainsi que les méthodes de raccord pour testShoppingCartConstructor et testItemCost.
    • Entrez le code suivant pour la méthode testShoppingCartConstructor.
      public void testShoppingCartConstructor()
      throws Exception
      {
      	MyShoppingCart cart = new MyShoppingCart();
      	Double priceOrchid = (Double)cart.myFlowers.get("Orchid");
      	Double priceTulip = (Double)cart.myFlowers.get("Tulip");
      	
      	assertTrue(priceOrchid.doubleValue() == 5.99);
      	assertTrue(priceTulip.doubleValue() == 1.99);
      }
    • Entrez le code suivant pour la méthode testItemCost.
      public void testItemCost()
      throws Exception
      {
      	MyShoppingCart cart = new MyShoppingCart();
      	double priceForTwo = cart.itemCost("Orchid", 2);
      	
      	assertTrue(priceForTwo == 11.98);
      }
    • Sauvegardez shoppingCartTest_src.java. A partir du menu Fichier, sélectionnez Fichier > Sauvegarder.
  6. Ouvrez la perspective Test et créez un déploiement de test. Pour obtenir un exemple, voir Création d'un déploiement de test.
  7. Exécutez le test à l'aide de votre déploiement personnalisé.
    • Dans le navigateur de test, cliquez avec le bouton droit de la souris sur la suite de tests shoppingCartTest_src et sélectionnez Exécuter en tant que > Exécuter.... La boîte de dialogue Configuration d'exécution s'affiche.
    • Dans la sous-fenêtre Configurations, sélectionnez Test puis cliquez sur Nouveau.
    • Dans la partie gauche de la boîte de dialogue Configuration d'exécution (Sélection du test à exécuter), développez datapoolExample et sélectionnez la suite de tests shoppingCartTest_src.
    • Dans la partie droite de la boîte de dialogue Configuration d'exécution, sélectionnez le déploiement que vous avez créé.
    • Dans l'onglet Journaux de test, décochez l'option Utiliser les valeurs par défaut et sélectionnez le dossier du projet datapoolExample comme emplacement.
    • Cliquez sur Exécuter pour lancer le test.
  8. Faites un double clic sur le journal de test shoppingCartTest_src, qui s'affiche dans le navigateur de test. Le journal de test shoppingCartTest_src apparaît. Sélectionnez l'onglet Evénements pour afficher les détails du test. Vous devez voir les événements suivants : démarrage de la suite de tests, démarrage de Loop_MyShoppingCart, démarrage du test, verdict du test, arrêt du test, second démarrage du test, second verdict du test, second arrêt du test, arrêt de la boucle, verdict de la suite de tests et arrêt de la suite de tests.

Création d'un pool de données et initialisation des données de test


Dans cette procédure, vous créez un simple pool de données pour stocker les données de test. A l'aide de l'éditeur de pool de données, vous définissez les éléments structurels du pool de données, comprenant des variables (colonnes), des enregistrements (lignes) et des classes d'équivalence (groupes d'enregistrements associés).
  1. Créez un fichier CSV (Comma Separated Value) comprenant vos données de test. En général, vous pouvez exporter des données dans une application de type tableur ou une base de données au format CSV. Néanmoins, dans ce tutoriel, vous saisissez les données dans un éditeur de texte.
    • Entrez les éléments suivants dans un éditeur de texte.
      ,ModelNumber::String,Description::String,Price::Double
      flowers,F0001,Orchid,5.99
      flowers,F0002,Tulip,1.99
      flowers,F0003,White Poinsee,6.99
      flowers,F0004,White Rose,9.99
      flowers,F0005,Geraniums,4.99
    • Enregistrer ce fichier sous la forme flowerData.csv dans un emplacement externe temporaire.
  2. Dans Eclipse, ouvrez la perspective Test.
    • A partir du menu Fichier, sélectionnez Fenêtre > Ouvrir la perspective > Autre.
    • Sélectionnez Test et cliquez sur OK. Le navigateur de test s'affiche.
  3. Dans le navigateur de test, cliquez avec le bouton droit de la souris sur un projet et sélectionnez Nouveau > Elément de test... La boîte de dialogue Nouvel élément de test s'affiche.
  4. Dans la zone de liste Assistants, développez le dossier Ressources de test et sélectionnez Pool de données.
  5. Cliquez sur Suivant. La boîte de dialogue Nouveau pool de données s'affiche.
  6. Sélectionnez le dossier du projet de pool de données et le nom du pool de données. Dans la liste des projets existants, sélectionnez le projet datapoolExample. Dans la zone Nom, entrez shoppingCartDatapool. Cliquez sur Suivant pour continuer puis à nouveau sur Suivant pour ouvrir la page d'importation du fichier CSV (Comma Separated Value).
  7. Importez le fichier CSV flowerData.csv.
    • Dans la zone Fichier CSV, cliquez sur Parcourir et naviguez jusqu'au fichier flowerData.csv.
    • Sélectionnez l'option La première ligne contient les noms de variable et les types suggérés. La première ligne du fichier flowerData.csv contient les en-têtes de colonne et les types.
    • Sélectionnez l'option La première colonne contient les noms de classe d'équivalence. Les classes d'équivalence regroupent les données associées. La première colonne du fichier flowerData.csv indique une seule classe d'équivalence nommée flowers.
  8. Cliquez sur Terminer. Si vous avez spécifié les dimensions du pool de données d'origine, pouvant être incompatibles avec les dimensions du fichier CSV, une boîte de dialogue s'affiche. Cliquez sur Oui pour utiliser les dimensions du fichier CSV. Cliquez sur Non pour utiliser les dimensions d'origine indiquées (au risque de tronquer les données du fichier CSV). L'éditeur de pool de données s'ouvre, affichant les données contenues dans la classe d'équivalence flowers.

    Pour obtenir des informations détaillées sur la création d'un pool de données, voir Création d'un pool de données.


Modification des scénarios de test pour référencer un pool de données


Dans cette procédure, vous utilisez l'API de pool de données pour remplacer les valeurs de tests en code figé par les références aux colonnes du pool de données.

Ajout des bibliothèques requises par l'API de pool de données

L'API de pool de données nécessite plusieurs bibliothèques TPTP et EMF (Eclipse Modeling Framework). Dans cette procédure, vous ajoutez des bibliothèques à votre chemin de génération Java.
  1. Ouvrez la perspective Java. A partir du menu Fichier, sélectionnez Fenêtre > Ouvrir la perspective > Java.
  2. Ouvrez les propriétés du projet datapoolExample. Dans la fenêtre du navigateur ou de la vue Package, cliquez avec le bouton droit de la souris sur le dossier du projet datapoolExample et sélectionnez Propriétés. La boîte de dialogue des propriétés de datapoolExample s'affiche.
  3. Ajoutez tptp-models.jar au chemin de génération Java.
    • Sur la partie gauche, sélectionnez Chemin de génération Java.
    • Sur la partie droite, sélectionnez l'onglet Bibliothèques et cliquez sur Ajouter une variable... La boîte de dialogue Nouvelle entrée du chemin de variables s'affiche.
    • Sélectionnez la variable ECLIPSE_HOME et cliquez sur Etendre... La boîte de dialogue Extension de variable s'affiche. Ouvrez le dossier plugins > org.eclipse.tptp.platform.models_Version et sélectionnez tptp-models.jar, où Version représente votre numéro de version TPTP.
    • Cliquez sur OK pour ajouter la bibliothèque.
  4. Ajoutez org.eclipse.emf.common_Version.jar au chemin de génération Java, où Version représente votre version EMF.
    • Dans la boîte de dialogue Nouvelle entrée du chemin de variables, sélectionnez la variable ECLIPSE_HOME et cliquez sur Etendre...
    • Ouvrez le dossier plugins et sélectionnez org.eclipse.emf.common_Version.jar, où Version représente votre version EMF.
    • Cliquez sur OK pour ajouter la bibliothèque.
  5. Ajoutez org.eclipse.emf.ecore_Version.jar au chemin de génération Java, où Version représente votre version EMF.
    • Dans la boîte de dialogue Nouvelle entrée du chemin de variables, sélectionnez la variable ECLIPSE_HOME et cliquez sur Etendre...
    • Ouvrez le dossier plugins et sélectionnez org.eclipse.emf.ecore_Version.jar, où Version représente votre version EMF.
    • Cliquez sur OK pour ajouter la bibliothèque.
  6. Ajoutez org.eclipse.core.runtime_Version.jar au chemin de génération Java, où Version représente la version de votre plateforme Eclipse.
    • Dans la boîte de dialogue Nouvelle entrée du chemin de variables, sélectionnez la variable ECLIPSE_HOME et cliquez sur Etendre...
    • Ouvrez le dossier plugins et sélectionnez org.eclipse.core.runtime_Version.jar, où Version représente la version de votre plateforme Eclipse.
    • Cliquez sur OK pour ajouter la bibliothèque.
  7. Cliquez sur OK pour fermer la boîte de dialogue Propriétés.


Utilisation de l'API de pool de données

Dans cette procédure, vous modifiez la classe shoppingCartTest_src et la méthode testShoppingCartConstructor pour utiliser shoppingCartDatapool.
  1. Si nécessaire, ouvrez la perspective Java. A partir du menu Fichier, sélectionnez Fenêtre > Ouvrir la perspective > Java.
  2. Ouvrez shoppingCartTest_src.java. Dans le navigateur, ouvrez le dossier du projet datapoolExample et faites un double clic sur shoppingCartTest_src.java. Le contenu du fichier shoppingCartTest_src.java s'affiche dans l'éditeur Java.
  3. Ajoutez les instructions import suivantes dans la classe shoppingCartTest_src.
    import org.eclipse.hyades.models.common.datapool.impl.*;
    import org.eclipse.hyades.execution.runtime.datapool.*;
  4. Déclarez une instance de classe IDatapoolIterator. Cette instance de classe sera initialisée dans votre code de configuration et utilisée dans les méthodes de test.
    public class shoppingCartTest_src extends HyadesTestCase {
    	
    	IDatapoolIterator dpIterator;
    	
    	//...
  5. Modifiez la méthode setUp pour initialiser votre pool de données. Dans un environnement de test JUnit TPTP, la méthode setUp fournit une installation commune. Vous pouvez utiliser cette méthode pour initialiser les variables de test communes. Remarque : Indiquez le chemin complet de votre espace de travail à la place de <workspace> dans le constructeur java.io.File.
    protected void setUp() throws Exception {
    	// Initialize the datapool factory
    	IDatapoolFactory dpFactory = new Common_DatapoolFactoryImpl();
    		
    	// Load the shoppingCartDatapool datapool
    	IDatapool datapool = dpFactory.load(
    			new java.io.File("<workspace>\\datapoolExample\\shoppingCartDatapool.datapool"),
    			false);
    		
    	// Create an iterator to traverse the datapool
    	dpIterator = dpFactory.open(datapool,"org.eclipse.hyades.datapool.iterator.DatapoolIteratorSequentialPrivate");
    	
    	// Initialize the datapool to traverse the first equivalence class.
    	dpIterator.dpInitialize(datapool,0);
    }
    Remarques :
    • le second paramètre de la méthode IDatapoolFactory load indique si l'instance du pool de données est partagée. S'il a la valeur true (vrai), le cache du pool de données est vérifié pour y rechercher une copie existante du pool de données. S'il a la valeur false (faux), le pool de données est une instance privée. La modification d'une instance de pool de données partagé peut affecter d'autres utilisateurs et n'est recommandée que dans les environnements confinés.
    • Pour éditer de manière programmée un pool de données, importez org.eclipse.hyades.edit.datapool.
    • Le second paramètre de la méthode IDatapoolFactory open représente le type d'itérateur. Pour les pools de données partagés, utilisez DatapoolIteratorSequentialPrivate.
  6. Modifiez la méthode testShoppingCartConstructor pour utiliser shoppingCartDatapool.
    public void testShoppingCartConstructor()
    throws Exception
    {
    	MyShoppingCart cart = new MyShoppingCart();
    		
    	// Traverse through datapool...
    	// Test if constructor initializes each flower record appropriately
    	while(!dpIterator.dpDone())
    	{
    		String Description = dpIterator.dpCurrent().getCell("Description").getStringValue();
    		double datapoolPrice = dpIterator.dpCurrent().getCell("Price").getDoubleValue();
    		
    		// Test if the flower is accounted for in the application
    		Double applicationPrice;
    		assertNotNull(applicationPrice = (Double)cart.myFlowers.get(Description));
    		
    		// Test that the application price equals the price in the datapool
    		assertTrue(applicationPrice.doubleValue() == datapoolPrice);
    		
    		dpIterator.dpNext();
    	}
    }
  7. Sauvegardez shoppingCartTest_src.java. A partir du menu Fichier, sélectionnez Fichier > Sauvegarder.
  8. Ajoutez le pool de données à votre artefact de test (testArtifact).
    • Ouvrez la perspective Test. Dans le navigateur de test, faites un double clic sur testDeployment pour l'ouvrir dans l'éditeur.
    • Dans l'onglet Paires, sélectionnez testAsset (ressources de test) et cliquez sur Ouvrir...
    • Dans l'onglet Ressources de test, cliquez sur Ajouter.... Sélectionnez le pool de données et cliquez sur OK. Sauvegardez la ressource.
  9. Exécutez le test à l'aide de votre déploiement personnalisé.
    • Ouvrez la perspective Test. Dans le navigateur de test, cliquez avec le bouton droit de la souris sur la suite de tests shoppingCartTest_src et sélectionnez Exécuter en tant que > Exécuter.... La boîte de dialogue Configuration d'exécution s'affiche.
    • Dans la partie gauche de cette boîte de dialogue, sélectionnez la suite de tests shoppingCartTest_src.
    • Dans la partie droite de cette boîte de dialogue, sélectionnez le déploiement que vous avez créé à la section Avant de commencer.
    • Dans l'onglet Journaux de test, décochez l'option Utiliser les valeurs par défaut et sélectionnez le dossier du projet datapoolExample comme emplacement.
    • Cliquez sur Exécuter pour lancer le test.
  10. Faites un double clic sur le nouveau journal de test shoppingCartTest_src, qui s'affiche dans le navigateur de test. Le journal de test shoppingCartTest_src s'affiche. Sélectionnez l'onglet Evénements pour visualiser les détails des résultats de test.


Concepts connexes
Tâches de test communes et concepts

Tâches connexes
Création d'un déploiement de test
Utilisation de tests avec des données variables
Création manuelle d'un test JUnit

(C) Copyright IBM Corporation 2000, 2006. All Rights Reserved. (C) Copyright IBM France 2000, 2006. Tous droits réservés.