テスト・データ・テーブルを使用すると、テストの実行時に使用できるテスト入力および予期出力データを定義できます。テスト・データ・テーブルとテスト振る舞いスクリプトは同期化されるので、コードに加えた変更がテスト・データ・テーブルに反映され、またその逆も行われます。
以下の画面には、テスト・データ・テーブルの例が示されています。
テスト・データ・テーブル内の各行はコード内のオブジェクトまたは式を表し、各列はデータ・セット (等価クラス) を表します。各データ・セット列は 2 分割されており、その半分は入力値用、残りの半分は予期出力値用となっています。予期出力には、戻り値、例外、および出力用として特別にマークされているすべてのパラメーターが含まれます。
テスト・データ・テーブルを使用すると、以下の作業を実行できます。
割り当てステートメントの右側に表示可能な、構文的に有効な式はすべて、テスト・データ・テーブルに式として入力できます。これには、プリミティブ、ストリング (二重引用符で囲んだもの)、変数参照、およびコンストラクター呼び出しとメソッド呼び出しが含まれます。
また、テストの入力、予期出力、および戻り値として使用するセットと範囲も挿入できます。テスト・データ・テーブルには、セットおよび範囲を定義するための独自のセット・エディターと範囲エディターが含まれています。テーブル・セルの中で右クリックし、「セットの定義」または「範囲の定義」をクリックしてください。 セット・エディターまたは範囲エディターを使用しなければ、セル内にセットまたは範囲を入力できないことに注意してください。 セットは、データ・テーブル内で、中括弧 ({ }) とそのセットを定義するのに必要なすべてのコンマで区切った値で表示します。範囲は、データ・テーブル内で、コンマで区切った値を大括弧 ([ ]) で囲んで表示します。
テスト・データ・テーブルには、 データ・プールへのリンクを含めることもできます。データ・プールとは、 プリミティブ・データ型またはそれらに対応するラッパー型から成る 関連したデータ・レコードのコレクションです。データ・プール内の各変数は、 テスト・データ・テーブルではセットとして解釈されます。データ・プールはデータ・プール・エディターを使用して編集できます。データ・プール・エディターを開くには、 データ・プール・リンクをダブルクリックします。
テスト・データ・テーブルでは、式、範囲、セット、およびオブジェクトを使用できるだけでなく、配列も使用できます。配列とは、プリミティブ・エレメントまたはオブジェクト・エレメントの番号付きリストを入れるコンテナーです。配列は、1 次元配列にも多次元配列にもできます。つまり、配列には他の配列を含めることもできるということです。テスト・データ・テーブル内で、配列は階層的に表示されます。具体的には、配列内の各エレメントがそれぞれ独自の行に表示され、それらの行が、配列を表す行の下でネストされます。配列内のエレメントは、それぞれインデックス付きで表示され、他とは無関係に検索および変更できます。つまり、配列の最初のエレメントは [0]、2 番目のエレメントは [1]、というように表示されます。
プリミティブ型 (int、char、double、long など)、ラップされたプリミティブ型 (Integer または Double など)、または String を基にした引数は、テスト・データ・テーブル内で単一行として視覚化できます。ただし、複数の定義属性を持つオブジェクトは、テスト・データ・テーブル内で単一行として視覚化することはできません。 これらの複合オブジェクトは、テスト・データ・テーブル内で複数の行にわたって階層的に表示されます。
テスト・データ・テーブル内でオブジェクトを含む任意のセルをクリックすると、リストが表示されて、そこからオブジェクトの定義方法を選択できます。オブジェクトは、1 つ以上のコンストラクター、またはオブジェクト・プロパティーの 1 つ以上のセットによって定義できます。リストから項目を選択すると、オブジェクトを表す行が展開されて、選択した定義属性が表示されます。
データ・セット (または等価クラス) とは、そのどれもが同じ振る舞いを起動することを予期されている入力値のセットのことです。データ・セットは、データを、ユーザー・コードによりすべて同じ方法で処理する必要がある、複数の論理的な単位に区分化するのに便利です。テスト・データ・テーブル内の各データ・セットには、入力値用の列と予期出力値用の列が 1 つずつ含まれています。
各データ・セットは、1 つ以上のテスト実行用に値を提供します。テスト・データ・テーブルに 3 つのデータ・セットがある場合は、同じテストの振る舞いが少なくとも 3 回は実行されます。 (テスト・データ・テーブルで値としてセットおよび範囲を使用する場合は、そのセットまたは範囲のそれぞれの値ごとにテストが実行されます。)
テスト・データ・テーブルには、型の列があります。この列を編集して、インターフェース型の変数または継承クラスを持つ型の変数が、実装クラスまたはサブクラスのデータを持てるようにできます。例えば、仮に drawCalendar という名前のメソッドがあり、サブクラスとして GregorianCalendar および LunarCalendar を持つ Calendar 型の引数を 1 つ取るとします。 GregorianCalendar 型のオブジェクトを渡すテストのセットを定義する場合は、その引数の型のフィールドを編集します。型の編集時には、オリジナルの引数の型がメソッド・シグニチャーに表示されます。