プリミティブ型 (int、char、double、long など)、ラップされたプリミティブ型 (例えば、Integer または Double)、または String を基にした引数は、テスト・データ・テーブル内で単一行として視覚化できます。一方、複合オブジェクトは、テスト・データ・テーブル内で単一行として視覚化することはできず、複数のテーブル行にわたって階層的に表示する必要があります。複合オブジェクトの各行は属性 と呼ばれます。
Rational® Developer 製品では、オブジェクトとその属性を数種類の方法で定義できます。それらの定義は、以下のものを基にしています。
テスト・データ・テーブル内で、定義属性を持つオブジェクトを表す任意のセルをクリックすると、以下の画面に示されているように、そのオブジェクト用の定義属性のそれぞれ異なるセットが含まれているリストが表示されます。
この図では、Date 型のオブジェクトについて、定義属性の複数のセットが提供されています。
セットのいずれかを選択すると、以下の画面に示されるように、オブジェクトを表す行が展開されて、そのオブジェクト用に選択した定義属性 (このケースでは「プロパティーの設定」) が表示されます。
オブジェクトの定義属性は、テスト・データ・テーブルでのオブジェクトの定義に使用されるだけでなく、検証アクションでのオブジェクトの比較にも使用されます。オブジェクトの初期化にクラス固有またはインターフェース固有のサポートが使用された場合は、比較の実行にもその同じサポートが使用されます。オブジェクトがコンストラクターによって初期化された場合は、グローバル比較 (equals() メソッド) を使用して、実際の値が予期される値と比較されます。オブジェクトがプロパティーによって初期化された場合は、各プロパティー (属性) を比較することにより、実際の値が予期される値と比較されます。
定義する必要があるパラメーターまたは戻りの型が、インターフェースまたは抽象クラスを対象とするものである場合は、オブジェクトの属性を実際に定義するために、データ型をインターフェースを実装するサブクラス、または抽象クラスを拡張するサブクラスに変更する必要があります。例えば、以下のメソッドは IMoney インターフェースをパラメーターとして使用します。
public add (IMoney m)
テスト・データ・テーブルでは、IMoney インターフェースを、IMoney を実装するクラス (例えば Money) に変更する必要があります。詳しくは、『サブクラスを使用したオブジェクトの初期化とテスト』を参照してください。
特殊サポートが提供されるのは、以下のクラスです。