Aus Hyades-Test auf Datenpool zugreifen

Sie können einen Datenpool aus einem Hyades-Test heraus verwenden, indem Sie die Datenpool-API über den vom Test generierten Java-Code aufrufen.

Der Datenpool, den Sie verwenden wollen, muss bereits vorhanden sein.

Der Java-Code für den Test, von dem aus Sie den Datenpool verwenden wollen, muss bereits vorhanden sein. Den Code erstellen Sie, indem Sie mit der rechten Maustaste auf den Test klicken und Generieren auswählen.

Fügen Sie diese jar-Dateien dem Java-Erstellungspfad hinzu. [ECLIPSE_HOME] ist das Eclipse-Installationsverzeichnis:
  • [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
Die Schritte, wie ein Datenpool von dem Java-Code eines Tests aus verwendet wird, sind unten aufgelistet. An die Schritte schließt sich ein Beispiel an.
  1. Öffnen Sie den Test in Ihrem Java-Editor. Der Quellcode des Tests ist in der Testperspektive nicht sichtbar. Um den Test einzusehen, öffnen Sie die Java-Perspektive und blättern Sie zum Quellordner (standardmäßig: src/test).
  2. Fügen Sie dem Anfang des Tests Importanweisungen für die API-Klassen des Datenpools hinzu.
  3. Suchen Sie im Hauptteil des Tests nach der post-Klasse, die einen Wert enthält, den sie durch Werte aus einer Datenpoolspalte ersetzen wollen.
  4. Fügen Sie zu Beginn der post-Klasse Code hinzu, der einen Exemplarverweis zum Datenpool erstellt und eine Iterationsschleife durch diesen startet.
  5. Suchen Sie die Zeile, die den zu ersetzenden Wert enthält und fügen Sie Code ein, der den Wert durch einen Verweis auf die entsprechende Datenpoolspalte ersetzt.
  6. Am Ende der post-Klasse, direkt vor der rechten geschweiften Klammer, schließen Sie Ihre Iterationsschleife durch den Datenpool.

Der folgende Auszug veranschaulicht Schritt 2 und zeigt die Importanweisungen, die zu Beginn des generierten Hyades-Tests erscheinen. Die fettgedruckten Zeilen am Ende sind die Datenpoolimportanweisungen, die Sie Ihrem Test hinzufügen müssen.

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.*;

Der folgende Auszug veranschaulicht Schritt 3 und ist einem Test entnommen, in dem ein Tester auf www.amazon.com nach einem Buch mit Namen atonement gesucht hat.

	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");

Im folgenden Auszug, der die Schritte 4 und 5 veranschaulicht, zeigen die fettgedruckten Zeilen, wie der generierte Testcode so geändert wird, dass eine Spalte mit Namen title in einem Datenpool namens books den Wert atonement ersetzt. Geben Sie an der Stelle von "pathname of books.datapool" in der zweiten Zeile den vollständig qualifizierten Pfadnamen des Datenpools books an.

	public void c8postwww_amazon_com() throws Exception {

  IDatapoolFactory dpFactory = new Common_DatapoolFactoryImpl();
     IDatapool datapool = dpFactory.load(new File("pathname of books.datapool"), false); //false - nonshared
     IDatapoolIterator iter = dpFactory.open(datapool, 
                 "org.eclipse.hyades.datapool.DatapoolIteratorSequentialPrivate");
     iter.dpInitialize(datapool, -1);  //-1 - go through all ECs


     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");
	// request
		//	.setBody("url=index%3Dstripbooks=atonement=10=6");

    //new 
        String title = iter.dpCurrent().getCell("title").getStringValue();
        iter.dpNext();
        String body = "url=index%3Dstripbooks=" +  title + " =10=6";
        request.setBody(body);		
        //end new
        // Lines from test ommitted ...
        }// Close loop through datapool

Übergeordnetes Thema: Tests mit variablen Daten zur Verfügung stellen

(C) Copyright IBM Corporation 2000, 2004. Alle Rechte vorbehalten.