In diesem Abschnitt wird anhand eines Beispiels gezeigt, wie mit Hilfe der Functional Tester-Methode getTestData programmgesteuert auf die Werte in den Verzweigungen eines Strukturbaum-Steuerelements zugegriffen werden kann.
Im folgenden Beispiel werden Tests an der Java-Anwendung Classics durchgeführt:
import resources.GetTreeDataExampleHelper; import com.rational.test.ft.*; import com.rational.test.ft.object.interfaces.*; import com.rational.test.ft.object.interfaces.SAP.*; import com.rational.test.ft.object.interfaces.siebel.*; import com.rational.test.ft.script.*; import com.rational.test.ft.value.*; import com.rational.test.ft.vp.*; /** * Description : Functional Test Script * @author Administrator */ public class GetTreeDataExample extends GetTreeDataExampleHelper { /** * Script Name : GetTreeDataExample * Generated : Jul 14, 2006 4:46:31 PM * Description : Functional Test Script * Original Host : WinNT Version 5.1 Build 2600 (S) * * @since 2006/07/14 * @author Administrator */ public void testMain (Object[] args) { //Start Classics Java Application startApp("ClassicsJavaA"); // Frame: ClassicsCD tree2().waitForExistence(); //Display available test data types available from tree System.out.println ("Available Tree Data Types: " + tree2().getTestDataTypes()); //Declare variables for tree ITestDataTree cdTree; ITestDataTreeNodes cdTreeNodes; ITestDataTreeNode[] cdTreeNode; //Variables to hold tree data cdTree = (ITestDataTree)tree2().getTestData("tree"); cdTreeNodes = cdTree.getTreeNodes(); cdTreeNode = cdTreeNodes.getRootNodes(); //Print out total number of nodes System.out.println ("Tree Total Node Count: " + cdTreeNodes.getNodeCount()); System.out.println ("Tree Root Node Count : " + cdTreeNodes.getRootNodeCount()); //Iterate through tree branches; this is a recursive method. for (int i = 0;i<cdTreeNode.length;++i) showTree(cdTreeNode[i], 0); //Shut down Classics Java Application classicsJava(ANY,MAY_EXIT).close(); } void showTree(ITestDataTreeNode node, int indent) { //Recursive method to print out tree nodes with proper indenting. //Determine number of tabs to use - to properly indent tree int tabCount = ( indent < tabs.length() ? indent : tabs.length() ); //Print out node name + number of children System.out.println(tabs.substring(0, tabCount) + node.getNode() + " (" + node.getChildCount() + "children)" ); //Determine if node has children; recursively call this same //method to print out child nodes. ITestDataTreeNode[] children = node.getChildren(); int childCount = ( children != null ? children.length : 0 ); for ( int i = 0; i < childCount; ++i ) showTree(children[i], indent+1); } //String of tabs used to indent tree view final String tabs = "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t"; }
In der ersten Anzeige dieser Anwendung finden Sie eine Java Swing JTree-Komponente mit fünf Komponisten. Auf der nächsten Ebene darunter werden die verfügbaren CDs des ausgewählten Komponisten aufgelistet. Mit dem Code in diesem Beispiel werden die Werte aus allen Verzweigungen der Baumstruktur extrahiert und im Konsolfenster angezeigt.
Der erste Schritt zum Extrahieren der Daten besteht in der Anwendung der Methode getTestData, um die Daten aus dem Steuerelement auszulesen. Dazu wird folgende Syntax verwendet:
ITestDataTree cdTree; cdTree = (ITestDataTree)tree2().getTestData("tree");
Im nächsten Schritt wird eine Feldgruppe mit allen Knoten in der Baumstruktur erstellt. Gehen Sie dazu wie folgt vor:
ITestDataTreeNodes cdTreeNodes; ITestDataTreeNode[] cdTreeNode; cdTreeNodes = cdTree.getTreeNodes();//Encapsulates the root nodes. cdTreeNode = cdTreeNodes.getRootNodes();;//Extracts actual root nodes.
Beachten Sie, dass dieser Prozess aus zwei Schritten besteht. Zuerst müssen Sie die Methode getTreeNodes verwenden, um ein TreeNodes-Objekt zurückzugeben. Dann können Sie die Methode getRootNodes aufrufen, um einen Bereich der Stammknoten für die Baumstruktur zu extrahieren.
Anhand der Knoten in der Baumstruktur können Sie mit einer Rekursion jeden einzelnen Knoten durchlaufen und seinen Wert sowie die Anzahl direkt untergeordneter Elemente bestimmen. Dies geschieht mit Hilfe der rekursiven Methode showTree. Bei einer Rekursionsmethode handelt es sich um eine Methode, die sich selbst aufruft. Mit dieser Methode können Sie sich problemlos durch eine Baumstruktur bewegen. Zum Extrahieren des Knotenwerts wird die Methode getNode verwendet. Zum Extrahieren der Anzahl von untergeordneten Elementen, die im Knoten enthalten sind, wird die Methode getChildCount eingesetzt. In diesem Beispiel wird dazu folgender Code verwendet:
System.out.println(tabs.substring(0, tabCount) + node.getNode()+" (" + node.getChildCount() + " children)");
Beachten Sie die zusätzliche Codierung in der angepassten Methode showTree, die einen formatierten Ausdruck ermöglicht, bei dem Tabulatoren zur Darstellung der Einrückungen in der Baumstruktur verwendet werden.