Acessando um Datapool de um Teste do Hyades

Você pode utilizar um datapool a partir de um teste do Hyades, fazendo chamadas para a API do datapool a partir de um código Java gerado do teste.

O datapool que você deseja utilizar já deve existir.

O código Java para o teste a partir do qual você deseja utilizar um datapool deve existir. Gere o código clicando com o botão direito do mouse no teste e selecionando Gerar.

Inclua esses jars no caminho da construção Java. [ECLIPSE_HOME] é o diretório de instalação do 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
As etapas para utilizar um datapool a partir de um código Java de teste estão listadas abaixo. Um exemplo segue imediatamente as etapas.
  1. Abra o teste no editor Java. O código de origem do teste não está visível na perspectiva do teste. Para ver o teste, abra a perspectiva Java e procure a pasta de origem (src/test, por padrão).
  2. No início do teste, inclua instruções de importação para as classes de API do datapool.
  3. No corpo do teste, localize a classe de envio que contém um valor que você deseja substituir pelos valores de uma coluna do datapool.
  4. No início da classe de envio, inclua o código que cria uma referência de instância para o datapool e inicia um loop de iteração através dela.
  5. Localize a linha que contém o valor a ser substituído e inclua o código que substitui o valor por uma referência à coluna adequada do datapool.
  6. No final da classe de envio, antes do colchete de fechamento, feche o loop de iteração através do datapool.

O seguinte trecho, ilustrando a etapa 2, mostra as instruções de importação que aparecem no início de um teste do Hyades gerado. As linhas em negrito no final são as instruções de importação do datapoll que você deve incluir no teste.

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

O seguinte trecho, ilustrando a etapa 3, é obtido de um teste gerado no qual o testador foi para www.amazon.com e procurou um livro chamado 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");

No seguinte trecho, ilustrando as etapas 4 e 5, as linhas em negrito mostram como modificar o código de teste gerado, como em uma coluna chamada title em um datapool chamado books que substitui o valor atonement. No lugar de "pathname of books.datapool" na segunda linha, coloque o nome do caminho completo do datapoll 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

Tópico-pai: Fornecendo Testes com Dados Variáveis

(C) Copyright IBM Corporation 2000, 2004. Todos os Direitos Reservados.