So kann ein Steuerelement "TextBox" (Textfeld) die unterstützten Datentypen text und selected-text aufweisen. Jedem dieser Typen wird ein Zeichenfolgenname und eine Beschreibung zur Definition des Proxys zugeordnet. Dieser Name wird an die API getTestData(String) zum Abrufen der Steuerelementdaten übergeben. Während des Implementierens der API getTestData(String) müssen Sie die geeigneten vordefinierten Datentypen verwenden, diese mit den Steuerelementdaten füllen und entsprechend zurückgeben.
Das folgende Klassendiagramm zeigt die vordefinierten Testdatentypen, die von Functional Tester zur Verfügung gestellt werden:
Die folgenden vordefinierten Datentypen sind Beispiele für die Datentypen, die Sie während des Implementierens der Proxy-API "getTestData()" verwenden können.
TestDataText
Der Datentyp TestDataText stellt einen Zeichenfolgewert dar.
Dieser Mustercode zeigt, wie Sie den Datentyp "TestDataText" in Java implementieren können:
import com.rational.test.ft.vp.ITestData; import com.rational.test.ft.vp.impl.TestDataText; ITestData testData = null; testData = new TestDataText( getSelectedText()); return testData ;
Dieser Mustercode zeigt, wie Sie den Datentyp "TestDataText" in .NET implementieren können:
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
Der Datentyp TestDataList stellt eine Liste von Einträgen dar, z. B. Einträge in einem Listenfeld oder eine einzelne Spalte in einer Tabelle.
Dieser Mustercode zeigt, wie Sie den Datentyp "TestDataList" in Java implementieren können:
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));
Dieser Mustercode zeigt, wie Sie den Datentyp "TestDataList" in .NET implementieren können:
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
Der Datentyp TestDataTable stellt zweidimensionale Daten dar, die in Steuerelementen wie Tabellen oder Rastern enthalten sind.
Dieser Mustercode zeigt, wie Sie den Datentyp "TestDataTable" in Java implementieren können:
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;
Dieser Mustercode zeigt, wie Sie den Datentyp "TestDataTable" in .NET implementieren können:
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
Der Datentyp TestDataTree stellt die Daten in Form einer Baumstruktur dar.
Dieser Mustercode zeigt, wie Sie den Datentyp "TestDataTree" in .NET implementieren können:
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; }