Accès à un pool de données à partir d'un test Hyades

Vous pouvez utiliser un pool de données à partir d'un test Hyades en appelant l'API du pool de données à partir du code Java généré pour un test.

Le pool de données que vous souhaitez utiliser doit déjà exister.

Le code Java du test à partir duquel vous souhaitez utiliser un pool de données doit exister. Générez le code en cliquant sur le test à l'aide du bouton droit de la souris et en sélectionnant Générer.

Ajoutez ces archives Java au chemin de compilation Java. [ECLIPSE_HOME] est le répertoire d'installation Eclipse :
  • [ECLIPSE_HOME]/plugins/org.eclipse.hyades.models.common_3.0.0/common_model.jar
  • [ECLIPSE_HOME]/plugins/org.eclipse.hyades.test.datapool_3.0.0/datapool_api.jar
  • [ECLIPSE_HOME]/plugins/org.eclipse.emf.ecore_2.0.0/runtime/ecore.jar
  • [ECLIPSE_HOME]/plugins/org.eclipse.emf.common_2.0.0/runtime/common.jar
Les étapes à suivre pour utiliser un pool de données à partir du code Java d'un test sont décrites ci-dessous. Chaque étape est suivie par un exemple.
  1. Ouvrez le test dans l'éditeur Java. Le code source du test n'est pas visible dans la perspective du test. Pour afficher le test, ouvrez la perspective Java et accédez au dossier source (src/test par défaut).
  2. Au début du test, ajoutez des instructions d'importation pour les classes d'API du pool de données.
  3. Dans le corps du test, recherchez la classe post qui contient une valeur que vous souhaitez remplacer par des valeurs d'une colonne du pool de données.
  4. Au début de la classe post, ajoutez le code qui permet de créer une référence d'instance au pool de données et de lancer une boucle d'itération dans celle-ci.
  5. Recherchez la ligne contenant la valeur à remplacer et ajoutez le code qui remplace la valeur par une référence à la colonne de pool de données appropriée.
  6. A la fin de la classe post, et juste avant l'accolade fermante, fermez la boucle d'itération dans le pool de données.

L'extrait suivant, qui illustre l'étape 2, présente les instructions d'importation qui apparaissent au début d'un test Hyades généré. Les lignes en gras qui apparaissent à la fin correspondent aux instructions d'importation du pool de données que vous devez obligatoirement ajouter au test.

package test;
import java.util.Random;
import junit.extensions.RepeatedTest;
import junit.framework.Test;
import org.eclipse.hyades.test.common.junit.DefaultTestArbiter;
import org.eclipse.hyades.test.common.junit.HyadesTestCase;
import org.eclipse.hyades.test.common.junit.HyadesTestSuite;
import org.eclipse.hyades.test.http.runner.HttpCookieCache;
import org.eclipse.hyades.test.http.runner.HttpExecutor;
import org.eclipse.hyades.test.http.runner.HttpHeader;
import org.eclipse.hyades.test.http.runner.HttpRequest;
import org.eclipse.hyades.test.http.runner.HttpResponse;
import org.eclipse.hyades.test.http.runner.internal.util.HttpTestUtil;
import org.eclipse.hyades.models.common.datapool.impl.Common_DatapoolFactoryImpl;
import org.eclipse.hyades.execution.runtime.datapool.*;

L'extrait suivant, qui illustre l'étape 3, provient d'un test généré dans lequel le testeur a accédé au site www.amazon.com et recherché un ouvrage intitulé atonement.

	public void c8postwww_amazon_com() throws Exception {
		HttpRequest request = new HttpRequest();
		request.setMethod("POST");
		request.setVersion("1.1");
		request.setHost("www.amazon.com");
		request.setPort(80);
		request
				.setAbsolutePath("/exec/obidos/search-handle-form/102-5005957-7048952");
		request
				.setBody("url=index%3Dstripbooks=atonement=10=6");

Dans l'extrait suivant, qui illustre les étapes 4 et 5, les lignes en gras indiquent comment modifier le code du test généré afin que la colonne title du pool de données books remplace la valeur atonement. A la place de "pathname of books.datapool", situé à la ligne 2, indiquez le chemin d'accès complet au pool de données books.

	public void c8postwww_amazon_com() throws Exception {

  IDatapoolFactory dpFactory = new Common_DatapoolFactoryImpl();
     IDatapool datapool = dpFactory.load(new File("pathname of books.datapool"), false); //false - non partagé
     IDatapoolIterator iter = dpFactory.open(datapool,
                 "org.eclipse.hyades.datapool.DatapoolIteratorSequentialPrivate");
     iter.dpInitialize(datapool, -1);  //-1 - parcourt tous les CE


     while (!iter.dpDone())
     {

		   HttpRequest request = new HttpRequest();
		   request.setMethod("POST");
		   request.setVersion("1.1");
		   request.setHost("www.amazon.com");
		   request.setPort(80);
		   request
			.setAbsolutePath("/exec/obidos/search-handle-form/102-5005957-7048952");
	// demande
		//	.setBody("url=index%3Dstripbooks=atonement=10=6");

    //nouveau
        String title = iter.dpCurrent().getCell("title").getStringValue();
        iter.dpNext();
        String body = "url=index%3Dstripbooks=" +  title + " =10=6";
        request.setBody(body);		
        //fin nouveau
        // Lignes du test ignorées ...
        }// Fermeture de la boucle dans le pool de données

Rubrique parent : Utilisation de tests avec des données variables

(C) Copyright IBM Corporation 2000, 2004. All Rights Reserved.