Dieses Beispiel zeigt, wie die Methode getTestData
von Functional Test verwendet wird, um über das Programm auf die Werte in den Verzweigungen einer Strukturbaumsteuerung zuzugreifen.
Im folgenden Beispiel werden Tests 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.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 : <b>GetTreeDataExample</b>
* Generated : <b>Dec 14, 2002 6:24:48 AM</b>
* Modified : <b>Dec 14, 2002 6:24:48 AM</b>
* Description : Functional Test Script
* Original Host : WinNT Version 5.0 Build 2195 (Service Pack 3)
*
* @since 2002/12/14
* @author administrator
*/
public
void testMain (Object[] args)
{
//Turn off Log Viewer for this example
setOption(IOptionName.BRING_UP_LOGVIEWER, false);
//Start Classics Java Application
startApp("ClassicsJavaA");
//Wait for tree to appear
tree2Tree().waitForExistence();
//Display available test data types available from tree
System.out.println ("Available Tree Data Types: " +
tree2Tree().getTestDataTypes());
//Declare variables for tree
ITestDataTree cdTree;
ITestDataTreeNodes cdTreeNodes;
ITestDataTreeNode[] cdTreeNode;
//Variables to hold tree data
cdTree = (ITestDataTree)tree2Tree().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
ClassicsJavaFrame(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 wird eine JTree
-Komponente von Java Swing angezeigt, in der fünf Komponisten aufgelistet sind.
Die nächste Ebene darunter listet verfügbare CDs zum ausgewählten Komponisten auf.
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 Verwendung der Methode getTestData
, um die Daten aus dem Steuerelement zu extrahieren.
Dazu wird folgende Syntax verwendet:
ITestDataTree cdTree;
cdTree = (ITestDataTree)tree2Tree().getTestData("tree");
Der nächste Schritt besteht im Erstellen eines Bereichs, der alle Knoten in der Baumstruktur enthält. Dies wird auf folgende Weise erreicht:
ITestDataTreeNodes cdTreeNodes;
ITestDataTreeNode[] cdTreeNode;
cdTreeNodes = cdTree.getTreeNodes();//Encapsulates the root
nodes.
cdTreeNode = cdTreeNodes.getRootNodes();;//Extracts actual
root nodes.
Beachten Sie, dass dieser Prozess zwei Schritte umfasst. 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.
Auf Grundlage der Baumstrukturknoten können Sie eine Rekursion verwenden, um die einzelnen Knoten zu durchlaufen und deren Werte sowie die Anzahl der direkt untergeordneten Elemente zu ermitteln.
Dies wird mit der rekursiven Methode showTree
erreicht. Bei einer rekursiven Methode handelt es sich um eine Methode, die sich selbst aufruft. Dies ist eine effiziente Art, eine Baumstruktur zu durchlaufen.
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.
Nutzungsbedingungen | Feedback
(C) Copyright IBM Corporation 2002, 2004. Alle Rechte vorbehalten.