Excel ファイルからの DTO の読み取りデータ セットでは、テスト ステップで Java データ転送オブジェクト(DTO)をパラメータ化できます。 データ セットは、Excel スプレッドシートを使用してこれらのパラメータのデータ値を指定する簡単な方法を提供します。
Excel ファイルからの DTO の読み取りデータ セットは、DTO のプロパティに値を割り当て、オブジェクトをプロパティに格納します。 DTO がパラメータとして必要な場合は、いつでもこのプロパティを使用できます。 データ セット内のデータには、数値または文字列のような単純なデータ型、あるいは DTO、配列、およびコレクションなどの複雑なデータ型を使用できます。 Excel で表されるデータは、必要に応じて適切なデータ型に自動的に変換されます。 このデータ セットを使用する場合の複雑な点は、最初の Excel スプレッドシート作成です。 幸い、この作成は完了しています。 DTO のパッケージ名に応じて、オブジェクトを表す 1 つ以上の Excel シートを使用してテンプレートが作成されます。 プリミティブ、文字列、プリミティブの配列、および単純な個別の DTO の配列などのデータ型は、単一のシートで表すことができます。 オブジェクトの配列などのより複雑なデータ型は、完全な DTO を表すためにより多くの Excel シートを必要とします。
多くの場合、Web サービス エンドポイントは複雑な DTO を想定しています。 Excel データ セットは、Web サービスへのパラメータとして使用するオブジェクトの作成を容易にします。 Web サービスが最初に参照されると、WSDL の名前および URL が与えられます。 com.lisa.wsgen.SERVICENAME.OBJECTNAME 形式の Java DTO クラスが自動的に生成され、クラスパスで使用可能になります。 DTO クラス ブラウザで生成されたクラスを参照し、Excel ファイルを生成して、テンプレートに簡単に記入することができます。 以下の例を参照してください。
データ セットの作成は 2 段階のプロセスです。 まず、DevTest に Excel でテンプレートを作成させます。 次に、Excel スプレッドシートを開き、作成されたすべてのシート内のデータ フィールドに入力します。
テンプレートを作成する方法
データ セットの名前。 この名前は、現在の DTO オブジェクトを格納するために使用されるプロパティになります。
グローバル データ セットとして機能させるか、またはローカル データ セットとして機能させるかを指定します。 デフォルトは[グローバル]です。 ローカル データ セットはシミュレータごとに 1 つ作成されます。グローバル データ セットは 1 回作成され、すべてのシミュレータで共有されます。
現在のレコードの次のレコード(シーケンシャル アクセス)が読み取られるか、またはランダムなレコードが読み取られるか。 シーケンシャル読み取りがデフォルトです。
ランダム アクセスの場合に取得するレコード数の上限。 [ランダム]チェック ボックスがオンになっていない場合、このテキスト フィールドは無効です。
データ セットの終了に対応するアクションを選択します。 データ セットの最初からもう一度値を読み取るか、または実行するステップを選択できます。
完全修飾パス名、または参照プルダウン メニューを使用して Excel ファイルを参照します。
完全なパッケージ名、または DTO オブジェクトを参照します。 クラス ファイルは、テスト マネージャ上にある必要があります。 クラスは、hotDeploy ディレクトリにコピーしてテスト マネージャ上に配置します。
[詳細設定]では、以下を指定できます。
Excel DTO データ セットの生成中に、フラット化された子プロパティの上書きを選択します。 オフにした場合、子プロパティは固有のワークシートによる参照として生成されます。
フラット化されたプロパティに対する空のセルのセマンティックとは、DTO スプレッドシートで空のセルが解釈される方法を意味します。 たとえば、フラット化されたプロパティ
{ "prop1.subprop1"、"prop1.subprop2" } は、
subprop1 および subprop2 の両方に空のセル値がある場合、新しいセマンティックでは「prop1」への参照は NULL に設定されます。 古いセマンティックでは、prop1 は NULL ではありませんが、subprop1 および subprop2 への参照は両方とも NULL です。 新しいセマンティックはデフォルトで使用されます。これは特に、Nil 不可型を使用する WSDL による Web サービスでは使用される必要があります。 Nil 不可型の場合に使用しないと、DTO スプレッドシートを読み取るときに自動的に作成されるプロパティが含まれているので、中間の NULL でない参照が、スキーマに従って無効な XML を作成する場合があります(セル値が空であるため)。
スプレッドシートには、オブジェクトを構築するために必要なものがすべて含まれます。 次のセクションでは、データを追加する方法について説明します。
Excel スプレッドシートの作成
説明をわかりやすくするため、実際の DTO オブジェクト com.itko.example.dto.Customer を使用します。 このクラスは DevTest のサンプルに含まれており、[参照]ボタンを使用してテスト マネージャ を参照すると見つけることができます。
Customer DTO には以下のプロパティがあります。
|
プロパティ名 |
タイプ |
|
balance |
Double |
|
id |
int |
|
name |
String |
|
poAddr |
アドレス |
|
since |
日付 |
|
types |
int[] |
|
locations |
Address[] |
Address DTO には以下のプロパティがあります。
|
プロパティ名 |
タイプ |
|
city |
String |
|
line1 |
String |
|
line2 |
String |
|
状態 |
String |
|
zip |
String |
最初の 6 つの Customer DTO プロパティが 1 つの Excel スプレッドシートに表示されます。 ただし、locations プロパティ(Address オブジェクトの配列)は別の Excel スプレッドシートを必要とします。
DevTest は 1 番目のスプレッドシートの上部に、DTO 仕様(Customer)および現在の DTO オブジェクト(Customer)をリストします。 使用可能な場合、スプレッドシートには Java ドキュメントの場所がリストされます。 以下の図は、プロパティ名を指定する行に続けてデータ型を指定する行があるデータ シートを示しています。 1 番目のフィールド(列)は、DTO プロパティではなく特別なフィールド(プライマリ キー)で、各行に対する一意の値を保持します。

データ シートには、以下の項目があります。
型が Address[] の location プロパティは、このシートに表示されません。 location プロパティは、オブジェクトの配列であるため、Excel ファイルの 2 番目のシートに表示されます。 このシートには、各行に Address オブジェクトのデータが含まれます。 このシートには、「Primary Key」と「reference the containing DTO」という 2 つの特別なフィールドがあり、後者は、このシート内の行をプライマリ シート内の行にリンクするために使用されます。

各 Customer オブジェクトに複数の場所があるため、locations シート内の複数の行が、Customer シートの単一の行で指定されたオブジェクトに属します。 これは、親 Customer オブジェクトのプライマリ キーを Customer に属する各場所の「reference the containing DTO」フィールドにリストすることにより、2 番目のシートに明示されます。 これは、データベースのプライマリ/外部キーの関係と似ています。
![親の Customer オブジェクトのプライマリ キーを[(含まれる DTO を参照)]フィールドの Customer に属する各場所にリストした 2 つ目の Excel ファイル](o2148550.png)

スプレッドシートを保存し、DevTest で[テスト アンド キープ]をクリックすると、メッセージに 1 番目の Customer DTO が表示されます。

DTO の複雑さに応じて、Excel ワークブックにさらに複数の Excel シートがあります。 ただし、そのプロセスは上記の例と同じです。
プロパティとしてこの Customer DTO を使用する方法については、「CA Application Test の使用」の「テスト ステップ」の Java オブジェクトのテストについてのセクションを参照してください。
|
Copyright © 2014 CA Technologies.
All rights reserved.
|
|