Object Classes in Rational Functional Tester

There are times when Rational Functional Tester maps objects incorrecly, e.g. mapping a combo box as a check box (this seems to happen fairly frequently to me). To fix this, open the Object Map window (displayed after double clicking the object map file displayed in Script Explorer), select the object you wish to change, and make its “Proxy Class Name”, “Role” and “Test Object Class” match the relevant info from the following table.

Note: doing this can severely screw up your object map. It works for me, but it may not work for you. On your head be it should you chose to go fidding with your object map ;)

Target Object Type Proxy Class Name Role Test Object Class Name
Button .java.jfc.AbstractButtonProxy Button GuiTestObject
Checkbox .java.jfc.JCheckBoxProxy CheckBox ToggleGUITestObject
Combo Box .java.jfc.JComboBoxProxy ComboBox TextSelectGuiSubitemTestObject
Dialog Box .java.jfc.JDialogProxy Dialog TopLevelTestObject
Internal Frame .java.jfc.JInternalFrameProxy InternalFrame InternalFrameTestObject
Label .java.jfc.JLabelProxy Label GuiTestObject
List .java.jfc.JListProxy List SelectGuiSubitemTestObject
Menu Bar .java.jfc.JMenuBarProxy MenuBar GuiSubitemTestObject
Option Button .java.jfc.AbstractButtonProxy RadioButton ToggleGUITestObject
Page Tab List .java.jfc.JTabbedPaneProxy PageTabList GuiSubitemTestObject
Panel .java.jfc.InternalFrameTitlePaneProxy Panel GuiTestObject
Popup Menu .java.jfc.JPopupMenuProxy PopupMenu GuiSubitemTestObject
Scroll Pane .java.jfc.JScrollPaneProxy ScrollPane GuiSubitemTestObject
Split Pane .java.jfc.JSplitPaneProxy SplitPane GuiSubitemTestObject
Tabbed Pane .java.jfc.JPanelProxy TabbedPage GuiTestObject
Table .java.jfc.JTableProxy Table GuiSubitemTestObject
Table Header .java.jfc.JTableHeaderProxy TableHeader GuiSubitemTestObject
Text Field .java.jfc.JTextProxy Text TextGuiSubitemTestObject
Tree .java.jfc.JTreeProxy Tree GuiSubitemTestObject
Window .java.jfc.JFrameProxy Frame TopLevelTestObject

ObjectDumper

It isn’t possible to do much with Rational Functional Tester’s object maps (private or shared). The two features which I would like the most are the ability to export the names of the objects to something like a text file, and to be able to get a count of the objects. The following script gets most of the way there: it will dump all the object names to the console, as well as providing a count!

To use the method, paste it into a Rational Script class, and run it.

If you are dealing with object maps that contain thousands of objects, you may want to set the console buffer to be “Unlimited”.

/*
* Copyright (c) 2006, Nathaniel Ritmeyer
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
*  - Redistributions of source code must retain the above copyright notice, this list
*    of conditions and the following disclaimer.
*  - Redistributions in binary form must reproduce the above copyright notice, this
*    list of conditions and the following disclaimer in the documentation and/or other
*    materials provided with the distribution.
*  - Neither the name of natontesting.com nor the names of its contributors may be
*    used to endorse or promote products derived from this software without specific
*    prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
* SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
* WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/

public void printAllMappedTestObjects()
{
	Enumeration e = this.getScriptDefinition().getTestObjectNames();

	while(e.hasMoreElements())
	{
		System.out.println(e.nextElement());
	}
}