例如,TextBox 控件可以包含文本和选择的文本作为支持的数据类型。每种类型均与代理定义的字符串名称和描述相关联。将此名称传递至 getTestData(String) API,以便获取控件数据。实现 getTestData(String) API 时,您必须使用相应的预定义数据类型并使用控件数据填充数据类型,然后返回相应的数据类型。
以下类图显示 Functional Tester 可用的预定义的测试数据类型:
实现 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; }