Hyades テストからのデータ・プールへのアクセス

テストで生成された Java コードからデータ・プール API を呼び出すことにより、 Hyades テストからデータ・プールを使用することができます。

使用するデータ・プールは、すでに存在しているものでなければなりません。

データ・プールの使用元になるテストの Java コードが、すでに存在していなければなりません。 コードを生成するためには、テストを右マウス・ボタンでクリックし、「生成」を選択してください。

これらの JAR を Java のビルド・パスに追加します。 以下の [ECLIPSE_HOME] は、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
テストの Java コードからデータ・プールを使用するためのステップを以下に示します。 ステップの直後に例が示されています。
  1. ご使用の Java エディターでテストを開きます。 テストのソース・コードは、テスト・パースペクティブでは見ることができません。 テストを見るためには、Java パースペクティブを開き、 ソース・フォルダー (デフォルトでは src/test) を参照してください。
  2. テストの先頭に、データ・プール API クラスに関するインポート・ステートメントを追加します。
  3. テストの本体から、データ・プール列内の値で置き換えたい値を含むポスト・クラスを探し出します。
  4. ポスト・クラスの先頭に、 データ・プールに対するインスタンス参照を作成して、データ・プールで反復ループを開始するためのコードを追加します。
  5. 置き換えられる値を含む行を探し出し、 該当のデータ・プール列に対する参照でその値を置き換えるためのコードを追加します。
  6. ポスト・クラスの終わりの右中括弧の直前で、 データ・プールでの反復ループを閉じます。

以下の抜粋部分は、ステップ 2 に相当するもので、生成された Hyades テストの先頭にあるインポート・ステートメントを表しています。 終わりの部分の太字体で示した行は、テストに追加する必要のあるデータ・プール・インポート・ステートメントです。

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

以下の抜粋部分は、ステップ 3 に相当するもので、 生成されたテストの一部です。このテストで、テスターは www.amazon.com にアクセスして、 「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");

以下の抜粋部分は、ステップ 4 および 5 に相当するもので、 太字体で示した行は、生成されたテスト・コードを変更して、 データ・プール books 内の title という列で値 atonement を置き換える方法を示しています。 2 行目の "pathname of books.datapool" に代えて、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 - 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

親トピック: テストに変数データを提供

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