テスト・オブジェクトへの参照の登録解除

ヘルパー・スクリプト・メソッドは、テスト・オブジェクト・マップを使用することにより、テスト対象アプリケーション内のオブジェクトを参照します。 Functional Tester では、メソッドがオブジェクト上に呼び出されるたびに、このようにマップされたオブジェクトを検索します。しかし、場合によっては、Functional Tester でこの処理が行われないようにしたいときもあります。

例えば、同一のオブジェクト上に多数のメソッドを直接呼び出したいという場合に、オブジェクト上にメソッドが呼び出されるたびに Functional Tester がオブジェクトを検索するとなれば、時間が無駄になってしまいます。Functional Tester でオブジェクトに対して何もメソッドを呼び出さずにオブジェクトの検索を行うには、TestObject.find メソッドを使用することができます。TestObject.find は、テスト対象アプリケーション内のオブジェクトへの異なる種類の参照を含む、新しい TestObject を戻します。この参照は、連結参照、検索済み参照、または非マップ参照と呼ばれることがあります。

連結参照は、参照を明示的に登録解除するまで、テスト対象アプリケーション内のオブジェクトへのアクセスを保持します。 Functional Tester が連結参照を登録解除するのは、再生全部が終了したときのみであり、スクリプトが終了したときではありません。 オブジェクトへの連結参照が存在している間は、Functional Tester のために、アプリケーション内のオブジェクトが完全には解放されない場合があります。 例えば、Java™ オブジェクトへの連結参照を保持している間、Java オブジェクトにはガーベッジ収集が行われません。 作成した連結参照が不要になったなら、できるだけ早くその参照を明示的に登録解除する必要があります。

通常の Functional Tester スクリプトの中では、マップ済み参照を含む TestObjects は、ヘルパー・スクリプトからのメソッドだけです。 それ以外のすべての TestObjects には連結参照が含まれているので、登録解除が必要です。 例えば、メソッド TestObject.getTopParentTestObject を戻すように明示的に宣言されます。 その他のメソッドでは java.lang.Object を戻すことが宣言されていますが、TestObject を戻すこともでき、その場合はそれが登録解除されたものでなければなりません (例えば TestObject.getProperty)。

RationalTestScript には、TestObjects への参照を除去する com.rational.test.ft.script.RationalTestScript.unregisterunregisterAll といったメソッドがいくつか含まれています。 これらのメソッドの詳細は、「Functional Tester API Reference」を参照してください。

TestObjects ではないテスト対象アプリケーションから戻されるオブジェクトは、値を表すオブジェクトです。その種のオブジェクトは、値クラスと呼ばれます。値クラスは、テスト対象アプリケーション内のオブジェクトのコピーであり、テスト対象アプリケーション内のオブジェクトへの参照ではありません。値クラスの一般的な例としては、java.lang.Integerjava.awt.Rectangle があります。

Functional Tester のレコーダーおよびウィザードは、値クラスを戻すコードだけを生成します。例えば、「オブジェクトのプロパティー」テスト・ケースで表示されたプロパティーは、値クラスを値とするプロパティーです。特定のオブジェクトで使用可能な参照プロパティーを検索するには、TestObject.getNonValueProperties を呼び出すことができます。TestObject.getMethods を呼び出すと、TestObject.invoke を呼び出して起動できるすべてのメソッドのリストが表示されます。

テスト対象アプリケーション内のオブジェクトへの参照を含む TestObjects を直接扱う場合は、アプリケーションを不安定にしてしまうことがあるため、注意が必要です。 このような TestObjects はできるだけ早く登録解除してください。


フィードバック