テスト・データ・テーブル

テスト・データ・テーブルを使用すると、テストの実行時に使用できるテスト入力および予期出力データを定義できます。テスト・データ・テーブルとテスト振る舞いスクリプトは同期化されるので、コードに加えた変更がテスト・データ・テーブルに反映され、またその逆も行われます。

各テスト・データ・テーブルはテスト・コード内の特定のテスト・ケース (JUnit テスト・メソッド) にマップされるため、それぞれのテスト・メソッドごとに別個のテスト・データ・テーブルが作成されます。テスト振る舞いコードに対する作業中に、カーソルをあるセルから別のセルに移動すると、「テスト・データ・テーブル」ビューが自動的に更新されます。テスト振る舞いコードを最初に開いたときには、カーソルをそのコード内のテスト・メソッドに移動するまで、テスト・データ・テーブルは表示されません。
注: テスト・データ・テーブルとテスト振る舞いスクリプトを予想通りに同期化する ためには、「プロジェクト」 > 「自動的に ビルド」オプションが使用可能になっていることを確認してください。「保管」ボタン「保管」をクリックして、同期を強制にします。

以下の画面には、テスト・データ・テーブルの例が示されています。テスト・データ・テーブルの図

テスト・データ・テーブル内の各行はコード内のオブジェクトまたは式を表し、各列はデータ・セット (等価クラス) を表します。各データ・セット列は 2 分割されており、その半分は入力値用、残りの半分は予期出力値用となっています。予期出力には、戻り値、例外、および出力用として特別にマークされているすべてのパラメーターが含まれます。

テスト・データ・テーブルにはコンテンツ・アシスト が あり、Ctrl+Space を押すと、特定のセルのコンテンツが自動的に完了します。また、テスト・データ・テーブルでは、構文およびデータ型についての妥当性検査が自動的に行われて、 ユーザーが入力したデータが構文的に正しいことが保証されます。
注: テストでコンパイルできない場合は、 構文の検査は自動的にオフにされます。

テスト・データ・テーブルを使用すると、以下の作業を実行できます。

式、セット、範囲、およびデータ・プールの形式でのテスト・データの提供

割り当てステートメントの右側に表示可能な、構文的に有効な式はすべて、テスト・データ・テーブルに式として入力できます。これには、プリミティブ、ストリング (二重引用符で囲んだもの)、変数参照、およびコンストラクター呼び出しとメソッド呼び出しが含まれます。

また、テストの入力、予期出力、および戻り値として使用するセットと範囲も挿入できます。テスト・データ・テーブルには、セットおよび範囲を定義するための独自のセット・エディターと範囲エディターが含まれています。テーブル・セルの中で右クリックし、「セットの定義」または「範囲の定義」をクリックしてください。 セット・エディターまたは範囲エディターを使用しなければ、セル内にセットまたは範囲を入力できないことに注意してください。 セットは、データ・テーブル内で、中括弧 ({ }) とそのセットを定義するのに必要なすべてのコンマで区切った値で表示します。範囲は、データ・テーブル内で、コンマで区切った値を大括弧 ([ ]) で囲んで表示します。

テスト・データ・テーブルには、 データ・プールへのリンクを含めることもできます。データ・プールとは、 プリミティブ・データ型またはそれらに対応するラッパー型から成る 関連したデータ・レコードのコレクションです。データ・プール内の各変数は、 テスト・データ・テーブルではセットとして解釈されます。データ・プールはデータ・プール・エディターを使用して編集できます。データ・プール・エディターを開くには、 データ・プール・リンクをダブルクリックします。

配列へのエレメントの追加

テスト・データ・テーブルでは、式、範囲、セット、およびオブジェクトを使用できるだけでなく、配列も使用できます。配列とは、プリミティブ・エレメントまたはオブジェクト・エレメントの番号付きリストを入れるコンテナーです。配列は、1 次元配列にも多次元配列にもできます。つまり、配列には他の配列を含めることもできるということです。テスト・データ・テーブル内で、配列は階層的に表示されます。具体的には、配列内の各エレメントがそれぞれ独自の行に表示され、それらの行が、配列を表す行の下でネストされます。配列内のエレメントは、それぞれインデックス付きで表示され、他とは無関係に検索および変更できます。つまり、配列の最初のエレメントは [0]、2 番目のエレメントは [1]、というように表示されます。

オブジェクト・データ型の属性用のテスト・データの提供

プリミティブ型 (int、char、double、long など)、ラップされたプリミティブ型 (Integer または Double など)、または String を基にした引数は、テスト・データ・テーブル内で単一行として視覚化できます。ただし、複数の定義属性を持つオブジェクトは、テスト・データ・テーブル内で単一行として視覚化することはできません。 これらの複合オブジェクトは、テスト・データ・テーブル内で複数の行にわたって階層的に表示されます。

テスト・データ・テーブル内でオブジェクトを含む任意のセルをクリックすると、リストが表示されて、そこからオブジェクトの定義方法を選択できます。オブジェクトは、1 つ以上のコンストラクター、またはオブジェクト・プロパティーの 1 つ以上のセットによって定義できます。リストから項目を選択すると、オブジェクトを表す行が展開されて、選択した定義属性が表示されます。

データ・セットへのデータの区分化

データ・セット (または等価クラス) とは、そのどれもが同じ振る舞いを起動することを予期されている入力値のセットのことです。データ・セットは、データを、ユーザー・コードによりすべて同じ方法で処理する必要がある、複数の論理的な単位に区分化するのに便利です。テスト・データ・テーブル内の各データ・セットには、入力値用の列と予期出力値用の列が 1 つずつ含まれています。

各データ・セットは、1 つ以上のテスト実行用に値を提供します。テスト・データ・テーブルに 3 つのデータ・セットがある場合は、同じテストの振る舞いが少なくとも 3 回は実行されます。 (テスト・データ・テーブルで値としてセットおよび範囲を使用する場合は、そのセットまたは範囲のそれぞれの値ごとにテストが実行されます。)

サブクラスを使用したオブジェクトの初期化とテスト

テスト・データ・テーブルには、型の列があります。この列を編集して、インターフェース型の変数または継承クラスを持つ型の変数が、実装クラスまたはサブクラスのデータを持てるようにできます。例えば、仮に drawCalendar という名前のメソッドがあり、サブクラスとして GregorianCalendar および LunarCalendar を持つ Calendar 型の引数を 1 つ取るとします。 GregorianCalendar 型のオブジェクトを渡すテストのセットを定義する場合は、その引数の型のフィールドを編集します。型の編集時には、オリジナルの引数の型がメソッド・シグニチャーに表示されます。

データ・セットのブレークポイントの指定

テストをデバッグする場合 には、テスト・データ・テーブルにブレークポイントを定義すると役立ちます。テストをデバッグ・モードで実行すると、ブレークポイントによってプログラムが実行され、ブレークポイントが設定されている場所に達すると中断されます。ブレークポイントは、テスト内の 3 箇所に設定できます。
  • Java エディターの左ルーラー: テスト振る舞いスクリプト内の対応 する行でプログラムの実行が中断されます。
  • テスト・データ・テーブルの左ルーラー: 対応するアクションが発生すると、 プログラムの実行が中断されます。
  • テスト・データ・テーブルのデータ・セット・ヘッダー: 対応するデータ・セットが発生すると、プログラムの実行が中断されます。
ブレークポイントを設定するには、対応するルーラーまたは場所をダブルクリックするか、あるいは右クリックしてコンテキスト・メニューから「ブレークポイントの切り替え」を選択します。
関連概念
データ・セット
データ区分化技法
テスト生成プロセス
スタブ・データ・テーブル
関連タスク
セットの定義
範囲の定義
配列へのエレメントの追加
データ・プールへのリンク
オブジェクト・データ型の属性用のテスト・データの提供
サブクラスを使用したオブジェクトの初期化とテスト
予期される例外の選択
フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.