getTestData 메소드를 사용하여 트리 제어에서 항목 반복

이 주제는 Functional Tester의 getTestData 메소드를 사용하여 트리 제어의 분기에 있는 값에 프로그램에 따라 액세스하는 예를 제공합니다.

다음 예는 Classics Java™ 애플리케이션에 대해 테스트를 수행합니다.

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";

}

이 애플리케이션의 첫 화면은 5명의 작곡가를 나열하는 Java Swing JTree 컴포넌트입니다. 다음 아래 레벨은 선택된 작곡가에 대해 사용 가능한 CD를 나열합니다. 이 샘플의 코드는 트리의 모든 분기에서 값을 추출하고 콘솔 창에 이를 표시합니다.

데이터를 추출하는 첫 단계는 getTestData 메소드를 사용하여 제어에서 데이터를 추출하는 것입니다. 이것은 다음과 같은 구문으로 수행됩니다.

ITestDataTree cdTree;  
cdTree = (ITestDataTree)tree2().getTestData("tree");

다음 단계는 트리의 모든 노드를 포함하는 배열을 작성하는 것입니다. 이는 다음과 같이 수행됩니다.

ITestDataTreeNodes cdTreeNodes;
ITestDataTreeNode[] cdTreeNode;

cdTreeNodes = cdTree.getTreeNodes();//Encapsulates the root
nodes.
cdTreeNode = cdTreeNodes.getRootNodes();;//Extracts actual
root nodes.

이것은 두 단계로 이루어진 프로세스입니다. 먼저 getTreeNodes 메소드를 사용하여 TreeNodes 오브젝트를 리턴합니다. 그런 다음 getRootNodes 메소드를 호출하여 트리의 루트 노드 배열을 추출합니다.

가까운 위치의 트리 노드에서 재귀를 사용하여 각 노드를 이동하고 노드가 포함하는 바로 아래의 하위 수 및 해당 값을 결정할 수 있습니다. 이것은 재귀 메소드 showTree에서 수행됩니다. 재귀 메소드는 자체를 호출하는 메소드이며 트리 구조를 이동하는 효과적인 방법입니다. 노드 값을 추출하기 위해 getNode 메소드가 사용됩니다. 노드에 포함된 하위 수를 추출하기 위해서는 getChildCount 메소드가 사용됩니다. 이 예에서 이것은 다음 코드로 수행됩니다.

System.out.println(tabs.substring(0, tabCount) + node.getNode()+" (" + node.getChildCount() + " children)"); 

사용자 정의 showTree 메소드에서 제공되는 추가 코딩은 트리의 들여쓰기를 표시하기 위해 탭을 사용하는 형식화된 인쇄를 가능하게 합니다.


피드백