Examples: Creating a simple ProxyObject

This example explains how to create a simple ProxyObject.

To create, build, and deploy the ProxyObject class:


Procedure

  1. 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
            //
          }
        }
      }

  2. 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.

  3. 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.

  4. 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.

  5. Restart Functional Tester.