다음 예제 코드에서는 Java™ TestObject를 보여줍니다.
package sdk.sample; import com.rational.test.ft.object.interfaces.*; import com.rational.test.ft.object.TestObjectReference; import com.rational.test.ft.object.map.SpyMappedTestObject; public class ExtendedGuiTestObject extends GuiTestObject{ // FIVE Standard Contructors, has to be defined in every new TestObject public ExtendedGuiTestObject(SpyMappedTestObject mappedObject) { super(mappedObject); } public ExtendedGuiTestObject(SpyMappedTestObject mappedObject, TestObject anchor) { super(mappedObject, anchor); } public ExtendedGuiTestObject(SpyMappedTestObject mappedObject, TestObject anchor, long scriptCommandFlags) { super(mappedObject, anchor, scriptCommandFlags); } public ExtendedGuiTestObject(TestObjectReference ref) { super(ref); } public ExtendedGuiTestObject(TestObject obj) { super(obj); } // Newly added Method for this TestObejct, just a call forwarder using invokeProxy API public void performClick() { invokeProxy("performClick"); } }
다음 예제 코드에서는 .Net TestObject를 보여줍니다.
using TestObjectReference = Rational.Test.Ft.Object.TestObjectReference; using Rational.Test.Ft.Object.Interfaces; using Rational.Test.Ft.Object.Manager; using Rational.Test.Ft.Object.Map; namespace SDK.Sample { public class ExtendedGuiTestObject:GuiTestObject { // FIVE Standard Contructors, has to be defined in every new TestObject public ExtendedGuiTestObject(SpyMappedTestObject mappedObject):base (mappedObject) { } public ExtendedGuiTestObject(SpyMappedTestObject mappedObject, TestObject anchor) :base (mappedObject, anchor){ } public ExtendedGuiTestObject(SpyMappedTestObject mappedObject, TestObject anchor, long scriptCommandFlags):base (mappedObject, anchor, scriptCommandFlags) { } public ExtendedGuiTestObject(TestObjectReference ref_Renamed):base (ref_Renamed) { } public ExtendedGuiTestObject(TestObject obj):base (obj) { } // Newly added Method for this TestObejct, just a call forwarder using InvokeProxy API public virtual void PerformClick() { InvokeProxy("performClick"); } } }
다음 예제에서는 TestObject에 사용할 새 정식 이름을 정의할 수 있는 방법을 보여줍니다.
<?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>[NETProxyExtension]SDK.Sample.TestButtonProxy</ClassName> <Replaces/> <UsedBy>Rational.Controls.CustomButton</UsedBy> </Obj> </DomainImplementation> </Val> </Section> <Section L=".ConfigFileSection"> <Name>testObjects</Name> <Val L=".TestObjectManager"> <ComponentModel L=".ComponentModel"> <Name>Java</Name> </ComponentModel> <ComponentModel L=".ComponentModel"> <Name>Net</Name> <Obj L=".TestObject"> <CanonicalName>ExtendedGuiTestObject</CanonicalName> <TestObject>[NETProxyExtension]SDK.Sample.ExtendedGuiTestObject</TestObject> </Obj> </ComponentModel> <ComponentModel L=".ComponentModel"> <Name>Java</Name> <Obj L=".TestObject"> <CanonicalName>ExtendedGuiTestObject</CanonicalName> <TestObject>sdk.sample.ExtendedGuiTestObject</TestObject> </Obj> </ComponentModel> </Val> </Section> </ConfigFile>
다음 예제에서는 getTestObjectClassName() 메소드를 대체하는 Java 프록시 소스를 보여줍니다.
import com.rational.test.ft.domain.*; . . public String getTestObjectClassName() { return "ExtendedGuiTestObject"; // the canonical name for the newly created testObject }
다음 예제에서는 GetTestObjectClassName() 메소드를 대체하는 .Net 프록시를 보여줍니다.
using Rational.Test.Ft.Domain;. . public override System.String GetTestObjectClassName() { return "ExtendedGuiTestObject"; // the canonical name for the newly created testObject }