TestData 型

Functional Tester フレームワークは、コントロールから検査および参照用のデータを抽出するために getTestDataTypes() および getTestData(String) プロキシー・メソッドを呼び出します。 これらのメソッドは、データ検査ポイントの作成および再生の際に使用されます。 getTestDataTypes() メソッドをオーバーライドして、コントロール用の特定のデータ型をさらに追加することができます。

例えば、TextBox コントロールは、サポートされるデータ型として、text および selected-text を持つことができます。 これらの型はそれぞれ、プロキシーが定義するストリング名および説明と関連付けられます。 この名前は、コントロールのデータを取得するために getTestData(String) API に渡されます。 getTestData(String) API を実装する間、適切な事前定義データ型を使用して、それにコントロール・データを取り込み、それに応じたデータを戻す必要があります。

クラス図

以下のクラス図は、Functional Tester で使用可能な事前定義テスト・データ型を示しています。

TestData 型

以下の事前定義データ型は、getTestData() プロキシー API の実装中に使用できるデータ型のいくつかです。

TestDataText

TestDataText 型は、ストリング値を表します。

以下のサンプル・コードは、Java™ で TestDataText データ型を実装する方法を示しています。

import com.rational.test.ft.vp.ITestData;
import com.rational.test.ft.vp.impl.TestDataText;

ITestData testData =  null;
testData = new TestDataText( getSelectedText());
return testData ;

以下のサンプル・コードは、.Net で TestDataText データ型を実装する方法を示しています。

Rational.Test.Ft.Vp.ITestData testData = null ;
object item = ((ComboBox)theTestObject).SelectedItem ;
testData = new Rational.Test.Ft.Vp.Impl.TestDataText(((ComboBox)theTestObject).GetItemText(item));
return testData;

TestDataList

TestDataList 型は、項目のリスト (例えば ListBox の項目) およびテーブルの単一の列を表します。

以下のサンプル・コードは、Java で TestDataList データ型を実装する方法を示しています。

import com.rational.test.ft.vp.ITestData;
import com.rational.test.ft.vp.impl.TestDataElementList;
import com.rational.test.ft.vp.impl.TestDataList;

Object[] items = getListItemObjects();
TestDataElementList testData = new TestDataElementList();
for ( int i = 0; i < items.length; i ++  )
{
	if ( items[i] != null )
	{
		testData.add(new TestDataElement(items[i], false));
		nonNullValueExist = true;
	}
	else
		testData.add(null);
}
return (new TestDataList(testData));

以下のサンプル・コードは、.Net で TestDataList データ型を実装する方法を示しています。

Rational.Test.Ft.Vp.ITestData testData = null ;
string[] itemList = new string[((ComboBox)theTestObject).Items.Count] ;
for(int i=0; i < ((ComboBox)theTestObject).Items.Count; i++)
{
	object item = ((ComboBox)theTestObject).Items[i] ;

	if (item is string)
		itemList[i] = (string) item ;
	else
		itemList[i] = ((ComboBox)theTestObject).GetItemText(item) ;

}
testData = new Rational.Test.Ft.Vp.Impl.TestDataList(new Rational.Test.Ft.Vp.Impl.TestDataElementList(itemList)) ;
return testData;

TestDataTable

TestDataTable 型は、テーブルやグリッドなどのコントロールに含まれる二次元データを表します。

以下のサンプル・コードは、Java で TestDataTable データ型を実装する方法を示しています。

import com.rational.test.ft.vp.ITestData;
import com.rational.test.ft.vp.ITestDataTable;
import com.rational.test.ft.vp.impl.TestDataTable;
import com.rational.test.ft.vp.impl.TestDataTableRegion;
.
.
int rowCount = getRowCount();				
int colCount = getColumnCount();

object[] rowElements;
rowElements = new object[colCount];

for (int row = 0; row < rowCount; ++row)
{
	for (int col = 0; col < colCount; ++col)
	{
		object item = this.getItemText(row, col);
		if (item != null)
			rowElements[col] = item.ToString();
	}
	testData.add(rowElements);
}


for (int col = 0; col < colCount; ++col)
{
	object item = this.getColumnName(col);
	if (item != null)
		data.setColumnHeader(col, header);
}


testData.addComparisonRegion(TestDataTableRegion.allCells());
testData.setCompareBothByLeftRegions(true);

return testData;

以下のサンプル・コードは、.Net で TestDataTable データ型を実装する方法を示しています。

Rational.Test.Ft.Vp.ITestData testData = null;
System.Data.DataTable dataTable = GetControlData();

int colCount = dataTable.Columns.Count;
int rowCount = dataTable.Rows.Count;

object[] rowElements;
rowElements = new object[colCount];

for (int row = 0; row < rowCount; ++row)
{
	for (int col = 0; col < colCount; ++col)
	{
		object item = null;
		item = dataTable.Rows[row][col];
		if (item != null)
			item = item.ToString();
		rowElements[col] = item;
	}
	testData.Add(rowElements);
}


for (int col = 0; col < colCount; ++col)
{
	string columnName = dataTable.Columns[col].ColumnName;
	if (columnName != null && !columnName.Equals(string.Empty))
		testData.SetColumnHeader(col, columnName);
}

testData.AddComparisonRegion(TestDataTableRegion.AllCells());
testData.SetCompareBothByLeftRegions(true);

return testData;

TestDataTree

TestDataTree 型は、ツリー・データ構造を表します。

以下のサンプル・コードは、.Net で TestDataTree データ型を実装する方法を示しています。

public override Rational.Test.Ft.Vp.ITestData GetTestData(string testDataType)
{
.
.
	Rational.Test.Ft.Vp.ITestData testData = new TestDataTree(GetRootNodes());
	return testData;
.
.
}


private ITestDataTreeNodes GetRootNodes()
{
	System.Collections.ArrayList nodeCache = new System.Collections.ArrayList(80);
	System.Windows.Forms.TreeNodeCollection rootNodes = ((TreeView)this.theTestObject).Nodes;

	if ( rootNodes != null && rootNodes.Count > 0 )
	{
		for ( int i = 0; i < children.Length; ++i )
		{
			nodeCache.Add(GetNode(children[i], null));
		}
	}

	ITestDataTreeNode[] nodes = new TestDataTreeNode[nodeCache.Count];
	System.Array array = nodeCache.ToArray();
	for ( int i = 0; i < array.Length; ++i )
	{
		nodes[i] = (ITestDataTreeNode)array.GetValue(i);
	}
	TestDataTreeNodes testNodes = new TestDataTreeNodes(nodes);

	return testNodes;
}

// Gets called by GetRootNodes()

private ITestDataTreeNode GetNode(System.Object item, ITestDataTreeNode parent)
{
	String text = ((TreeNode)item).Text;
	ITestDataTreeAttributes attr = new TestDataTreeAttributes(text);
	ITestDataTreeNode node = new TestDataTreeNode(parent, text, null, false);

	System.Collections.ArrayList nodeCache = new System.Collections.ArrayList(20);

	System.Windows.Forms.TreeNodeCollection childrenNodes = ((TreeNode)item).Nodes;

	if ( childrenNodes != null && childrenNodes.Count > 0 )
	{
		int length = childrenNodes.Count;
		if ( length > 0 ) 
		{
			for ( int i = 0; i < length; ++i )
			{
				nodeCache.Add(GetNode(children[i], node));
			}
			int size = nodeCache.Count;
			if ( size > 0 )
			{
				ITestDataTreeNode[] childNodes = new ITestDataTreeNode[size];
				System.Array array = nodeCache.ToArray();
				for ( int i = 0;i < size; i ++ )
					childNodes[i] = (ITestDataTreeNode)array.GetValue(i);
				node.SetChildren(childNodes);
			}
		}
	}
	return node;
}

フィードバック