Mit der Methode "GetTestData" durch Elemente im Strukturbaum iterieren

In diesem Abschnitt wird anhand eines Beispiels gezeigt, wie mit Hilfe der Methode GetTestData von Functional Tester 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:

#Region " Script Header "
' Functional Test Script
' author Administrator

 Imports Microsoft.VisualBasic
Imports Rational.Test.Ft
Imports Rational.Test.Ft.Object.Interfaces
Imports Rational.Test.Ft.Object.Interfaces.SAP
Imports Rational.Test.Ft.Object.Interfaces.Siebel
Imports Rational.Test.Ft.Script
Imports Rational.Test.Ft.Value
Imports Rational.Test.Ft.Vp
#End Region

Public Class GetTreeDataExample Inherits GetTreeDataExampleHelper
' Script Name    : GetTreeDataExample
    'Generated     : Jul 17, 2006 3:25:22 PM
    'Description   : Functional Test Script
    'Original Host : Windows XP x86 5.1 build 2600 Service Pack 2 

    'since  2006/07/17
    'author Administrator

    Public Function TestMain(ByVal args() As Object)
        ' Turn off Log Viewer for this example
         SetOption(IOptionName.BRING_UP_LOGVIEWER, False)

        'Start Classics Java Application
        StartApp("ClassicsJavaA")

        ' Wait for tree to appear
        Tree2().WaitForExistence()

        ' Display available test data types available from tree
        System.Console.WriteLine(String.Format("Available Tree Data Types: {0}", Tree2().GetTestDataTypes()))

        ' Declare variables for tree
        Dim CdTree As ITestDataTree
        Dim CdTreeNodes As ITestDataTreeNodes
        Dim CdTreeNode() As ITestDataTreeNode

        ' Variables to hold tree data
        CdTree = Tree2().GetTestData("tree")
        CdTreeNodes = CdTree.GetTreeNodes()
        CdTreeNode = CdTreeNodes.GetRootNodes()


        ' Print out total number of nodes
        System.Console.WriteLine("Tree Total Node Count: " + CdTreeNodes.GetNodeCount())
        System.Console.WriteLine("Tree Root Node Count : " + CdTreeNodes.GetRootNodeCount())

        ' Iterate through tree branches; this is a recursive method.

        Dim I As Integer
 
        For I = 0 To CdTreeNode.Length - 1
            ShowTree(CdTreeNode(I), 0)
        Next I


        ' Shut down Classics Java Application
         ClassicsJava(ANY, MAY_EXIT).Close()
    End Function


    Public Sub ShowTree(ByVal Node As ITestDataTreeNode, ByVal _
        Indent As Integer)
        ' Recursive method to print out tree nodes with proper
        ' indenting.

        ' Determine number of tabs to use - to properly indent tree
        Dim TabCount As Integer
        IIf(Indent < Tabs.Length(), TabCount = Indent, TabCount = Tabs.Length())

        ' Print out node name + number of children
        System.Console.WriteLine(Tabs.Substring(0, TabCount) + Node.GetNode() + " (" + Node.GetChildCount() + " Children)")

        ' Determine if node has children; recursively call this same
        ' method to print out child nodes.
        Dim Children() As ITestDataTreeNode = Node.GetChildren()
        Dim ChildCount As Integer


        IIf(ChildCount <> 0, ChildCount = Children.Length, ChildCount = 0)

        Dim I As Integer
 
        For I = 0 To ChildCount - 1
            ShowTree(Children(I), Indent+1)
        Next I

    End Sub

    ' String of tabs used to indent tree view
     Const Tabs As String = _
    "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t"

End Class

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.

Im ersten Schritt verwenden Sie die Methode GetTestData, um die Daten aus der Steuerung zu extrahieren. Dazu wird folgende Syntax verwendet:

     Dim CdTree As ITestDataTree
     CdTree = Tree2().GetTestData("tree")

Im nächsten Schritt wird eine Feldgruppe mit allen Knoten in der Baumstruktur erstellt. Gehen Sie dazu wie folgt vor:

     Dim CdTreeNodes As ITestDataTreeNodes
     Dim CdTreeNode As ITestDataTreeNode()
 
     CdTreeNodes = CdTree.GetTreeNodes()
     CdTreeNode = CdTreeNodes.GetRootNodes()

Beachten Sie, dass dieser Prozess aus zwei Schritten besteht. Zunächst müssen Sie die Methode GetTreeNodes anwenden, um ein TreeNodes-Objekt zu erstellen. Anschließend rufen Sie die Methode GetRootNodes auf, um eine Feldgruppe mit den 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. Dazu müssen Sie die Rekursionsmethode ShowTree anwenden. 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. Um den Wert des Knotens zu extrahieren, müssen Sie die Methode GetNode anwenden. Extrahieren Sie die im Knoten enthaltenen untergeordneten Elemente mit der Methode GetChildCount. In diesem Beispiel wird dazu folgender Code verwendet:

     System.Console.WriteLine(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.


Feedback