通过从测试的已生成 Java 代码中调用数据池 API,可以从 Hyades 测试中使用数据池。
要使用的数据池必须已存在。
想要使用数据池的测试的 Java 代码必须存在。通过右键单击测试并选择生成来生成代码。
以下摘录(说明步骤 2)显示了在生成的 Hyades 测试开头出现的 import 语句。末尾的粗体行是必须添加到测试中的数据池 import 语句。
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 值。在第二行中“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