例如,您可能想直接在同一对象上调用多个方法,每当对象上有方法被调用时,Functional Tester 将花费时间去查找对象。可以使用 TestObject.find 方法来查找对象,同时 Functional Tester 无需调用对象上的任何方法。TestObject.find 将返回一个包含其他种类的对测试下应用程序中对象的引用的新 TestObject。此种引用有时称为绑定的引用、找到的引用或非映射的引用。
绑定的引用将保留对测试下应用程序中对象的访问,直到您明确注销引用。仅当整个回放结束而不是脚本结束时,Functional Tester 才会注销绑定的引用。只要对象的绑定的引用存在,Functional Tester 便可能阻止应用程序中的对象处于完全空闲状态。例如,如果您保留对 Java™ 对象的绑定的引用,那么 Java 对象便不会被进行垃圾回收处理。当您不再需要自己所创建的绑定的引用时,必须明确地注销引用。
在一般的 Functional Tester 脚本中,唯一包含映射的引用的 TestObjects 是来自 helper 脚本中的方法。所有其他 TestObjects 包含绑定的引用并且必须注销。例如,方法 TestObject.getTopParent 明确声明将返回一个 TestObject。其他方法均声明返回一个 java.lang.Object,但可以返回一个必须注销的 TestObject(例如 TestObject.getProperty)。
RationalTestScript 包含若干可以除去对 TestObjects 的引用的方法,其中包括 com.rational.test.ft.script.RationalTestScript.unregister 和 unregisterAll。请参阅《Functional Tester API 参考大全》获取有关这些方法的信息。
从测试下应用程序返回的不是 TestObjects 的对象是代表了值的对象。此种类型的对象称为值类。值类是测试下应用程序中的对象的副本,而不是对测试下应用程序中的对象的引用。值类的常见示例有 java.lang.Integer 和 java.awt.Rectangle。
Functional Tester 录制器和向导仅生成返回值类的代码。例如,在“对象属性”测试用例中看到的属性,其值便是值类。您可以调用 TestObject.getNonValueProperties 来查找特定对象的可用引用属性。可以调用 TestObject.getMethods 来查看方法列表,此列表中包含了通过调用 TestObject.invoke 可以调用的所有方法。
当直接处理包含对测试下应用程序中的对象的引用的 TestObjects 时,请一定谨慎,因为这可能会给应用程序带来不稳定性。请尽可能注销这些 TestObjects。