Examples: Creating a simple ProxyObject
This example explains how to create a simple ProxyObject.
To create, build, and deploy the ProxyObject class:
Procedure
- Create a ProxyObject class using one of the following methods:
- Create a JFormattedTextFieldProxy ProxyObject in Java extended from the Functional Tester Java domain proxy, com.rational.test.ft.domain.java.jfc.JTextProxy. For example type the following code to create JFormattedTextFieldProxy.java:
package proxysdk.samples.java; import com.rational.test.ft.domain.java.jfc.JTextProxy; /** * @author administrator * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Generation - Code and Comments */ public class JFormattedTextFieldProxy extends JTextProxy { /** * Sets the SUT object * as a member variable for the proxy. All interactions with the * supplied object are performed through this class. */ public JFormattedTextFieldProxy(Object theObjectInTheSUT) { super(theObjectInTheSUT) ; } /* * TODO: Override more ProxyObject Methods here */ }- Create a MaskedTextProxy ProxyObject in C# extended from the Functional Tester .Net domain proxy, Rational.Test.Ft.Domain.Net.TextBoxProxy. For example type the following code to create MaskedTextProxy.cs:
using Rational.Test.Ft.Domain; using Rational.Test.Ft.Domain.Net; namespace ProxySDK.Samples.Net { /// <summary> /// Summary description for MaskedTextProxy. /// </summary> public class MaskedTextProxy:TextBoxProxy { public MaskedTextProxy(NetTestDomainImplementation domain, IChannel channel, System.Object theTestObject): base( domain, channel, theTestObject) { } // // TODO: Override more ProxyObject Methods here // } }- Create a StatusBarProxy ProxyObject in C# extended from the Functional Tester Win domain proxy, Rational.Test.Ft.Domain.Win.GenericProxy. For example type the following code to create StatusBarProxy.cs:
using Rational.Test.Ft.Domain; using Rational.Test.Ft.Domain.Win; namespace ProxySDK.Samples.Win { /// <summary> /// Summary description for StatusBarProxy. /// </summary> public class StatusBarProxy:GenericProxy { public StatusBarProxy(WinTestDomainImplementation domain, IChannel channel, IWinControl theAUTControl): base( domain, channel, theAUTControl) { // // TODO: Add constructor logic here // } } }- Build the ProxyObject binary files using build commands.
- For Java, the compiled binary output is a JAR file, for example JFormattedTextFieldProxy.jar.
- For .Net, the compiled binary output is a .Net assembly, for example MaskedTextProxy.dll or StatusBarProxy.dll.
- Map the ProxyObject classes to the AUT control classes in the Functional Tester customization file (a .rftcust file) using one of the following methods:
- Specify a mapping entry under the Java domain to use the proxysdk.samples.java.JFormattedTextFieldProxy ProxyObject for the javax.swing.JFormattedTextField control. For example, type the following code to create JFormattedTextFieldProxy.rftcust:
<?xml version="1.0" encoding="UTF-8"?> <ConfigFile L=".ConfigFile"> <Section L=".ConfigFileSection"> <Name>proxies</Name> <Val L=".ProxyManager"> <DomainImplementation L=".DomainImplementation"> <Name>Java</Name> <Obj L=".Proxy"> <ClassName>proxysdk.samples.java.JFormattedTextFieldProxy</ClassName> <Replaces/> <UsedBy>javax.swing.JFormattedTextField</UsedBy> </Obj> </DomainImplementation> </Val> </Section> </ConfigFile>With this mapping, Functional Tester creates a JFormattedTextFieldProxy instance for every JFormattedTextField Java UI control found.
- Specify a mapping entry under the .Net domain to use the ProxySDK.Samples.Net.MaskedTextProxy ProxyObject for the System.Windows.Forms.MaskedTextBox .Net control implemented in the [System.Windows.Forms] .Net assembly. For example, type the following code to create MaskedTextProxy.rftcust:
<?xml version="1.0" encoding="UTF-8"?> <ConfigFile L=".ConfigFile"> <Section L=".ConfigFileSection"> <Name>proxies</Name> <Val L=".ProxyManager"> <DomainImplementation L=".DomainImplementation"> <Name>NET</Name> <Obj L=".Proxy"> <ClassName>[MaskedTextBoxProxy]ProxySDK.Samples.Net.MaskedTextProxy </ClassName> <Replaces/> <UsedBy>[System.Windows.Forms]System.Windows.Forms.MaskedTextBox</UsedBy> </Obj> </DomainImplementation> </Val> </Section> </ConfigFile>Specify assembly names with [] while specifying .Net control class names.
- Specify a mapping entry under the Win domain to use the [StatusBarProxy]ProxySDK.Samples.Win.StatusBarProxy ProxyObejct for the StatusBar20WndClass Win control. For example, type the following code to create StatusBarProxy.rftcust:
<?xml version="1.0" encoding="UTF-8"?> <ConfigFile L=".ConfigFile"> <Section L=".ConfigFileSection"> <Name>proxies</Name> <Val L=".ProxyManager"> <DomainImplementation L=".DomainImplementation"> <Name>Win</Name> <Obj L=".Proxy"> <ClassName>[StatusBarProxy]ProxySDK.Samples.Win.StatusBarProxy</ClassName> <Replaces/> <UsedBy>STATUSBAR20WNDCLASS</UsedBy> </Obj> </DomainImplementation> </Val> </Section> </ConfigFile>- Specify mapping entries for all ProxyObjects in a combined customization file.
You must specify the proxy mappings in their respective <DomainImplementation L=".DomainImplementation"> section
For example, type the following code to create combined.rftcust:
<ConfigFile L=".ConfigFile"> <Section L=".ConfigFileSection"> <Name>proxies</Name> <Val L=".ProxyManager"> <!-- Add DomainImplementation section for each domain --> <DomainImplementation L=".DomainImplementation"> <Name>Java</Name> <Obj L=".Proxy"> <ClassName>proxysdk.samples.java.JFormattedTextFieldProxy</ClassName> <Replaces/> <UsedBy>javax.swing.JFormattedTextField</UsedBy> </Obj> <!-- Add <Obj L=".Proxy"> section here for each Java proxy mapping --> </DomainImplementation> <DomainImplementation L=".DomainImplementation"> <Name>NET</Name> <Obj L=".Proxy"> <ClassName>[MaskedTextBoxProxy]ProxySDK.Samples.Net.MaskedTextProxy </ClassName> <Replaces/> <UsedBy>[System.Windows.Forms]System.Windows.Forms.MaskedTextBox</UsedBy> </Obj> <!-- Add <Obj L=".Proxy"> section here for each .NET proxy mapping --> </DomainImplementation> <DomainImplementation L=".DomainImplementation"> <Name>Win</Name> <Obj L=".Proxy"> <ClassName>[StatusBarProxy]ProxySDK.Samples.Win.StatusBarProxy</ClassName> <Replaces/> <UsedBy>STATUSBAR20WNDCLASS</UsedBy> </Obj> <!-- Add <Obj L=".Proxy"> section here for each Win proxy mapping --> </DomainImplementation> </Val> </Section> </ConfigFile>For any syntax or usage clarification, see the customization file rational_ft.rftcust in C:\Program Files\IBM\SDP70\FunctionalTester\bin. This file contains mapping entries for all ProxyObjects that are delivered with Functional Tester.
- Deploy the proxy binary files, for example JFormattedTextFieldProxy.jar, MaskedTextProxy.dll, and StatusBarProxy.dll and the corresponding customization files by copying them to the Functional Tester customization directory, C:\Documents and Settings\All Users\Application Data\IBM\RFT\customization.
- Restart Functional Tester.