スタブの振る舞い

スタブ は、コードから呼び出される実際のクラスに置換の実装を提供するクラスです。 Java™ コンポーネント 用、Enterprise JavaBeans™ (EJB) 用、および Web サービス用のスタブを生成できます。

スタブの通常の使用目的は次のとおりです。

Java クラスのスタブを定義して、そのスタブを複数のテストで再利用できます。スタブを作成したら、その振る舞いをスタブ・データ・テーブルに定義するか、そのスタブと関連付けられているユーザー・コード・クラスにコードを入力します。

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

スタブ・データ・テーブルは、特定の入力に対するスタブ・クラスの出力における振る舞いを定義します。スタブ・データ・テーブルを使用し、それぞれのスタブ・メソッドごとに実際の入力値と戻り値を指定して、スタブ・クラスをシミュレートしてください。 以下のサンプル不動産アプリケーションで、スタブ・データ・テーブルの使用法を示します。

このアプリケーションでは、LenderAppraiser という 2 つの クラスがテスト対象となっています。 Mortgage という名前の 3 番目のクラスは、Lender クラスと Appraiser クラスのテストをより容易に分離できるようにスタブされています。これらのクラスとそのメソッドの要約を、以下の表に示します。

Lender Appraiser Mortgage
validateCredit getBestMortgageRate getAPR
computeFixed30y    
computeARM30y    

Mortgage クラスの getAPR メソッドは、2 つの入力パラメーター points および score を取り込み、rate を戻します。以下の Mortgage クラス用のスタブ・データ・テーブルに示されているように、points パラメーターが 1 に等しい場合は、score パラメーターの値にかかわらず、rate 出力は 5.94% となります。 points パラメーターが 2 に等しく、さらに score が 700 から 900 の範囲内である場合は、rate 出力は 5.69% となります。

スタブ・データ・テーブルの例

スタブ・データ・テーブルの使用を通じて、getAPR メソッドの振る舞いをシミュレートできます。

注: 重複する入力値がある場合は、より左にあるデータ・セットに定義されている振る舞いが優先されます。例えば、最初のデータ・セットには 1 から 20 という範囲が含まれており、2 番目のデータ・セットには 1 から 10 という範囲が含まれている場合、スタブは最初のデータ・セットの 1 から 20 の範囲から指定された値を戻し、2 番目の データ・セット内の値は無視します。

スタブ・ユーザー・コード・クラス

スタブの振る舞いの定義は、スタブと一緒に生成されるユーザー・コード・クラスにコードを追加するという方法でも行えます。通常は、スタブの振る舞いをスタブ・データ・テーブルで実行できない場合に、スタブの振る舞いをユーザー・コード・クラスに定義します。これは、例えば次のような場合に行います。

ある特定のメソッド用としてユーザー・コード・クラスに追加したコードはすべて、スタブ・データ・テーブルに指定されている振る舞いより優先されます。

Enterprise JavaBeans (EJB) の場合のスタブ

セッション Bean のテストでスタブを使用できます。例えば、そのビジネス・メソッドをまだ完全には実装していないセッション Bean 用のスタブを作成することがあります。ほとんどの場合は、エンティティー Bean をスタブする必要はありません。なぜなら、スタブを使用しなくてもエンティティー Bean を分離してテストできるからです。

EJB スタブは、実行時にサーバー上にデプロイされます。デプロイされたスタブが例外をスローする場合 には、実際のスタブではなく、サーバーからカプセル化された例外メッセージを受信します。

Web サービス付きのスタブ

Web サービスの開発時にスタブを使用できます。 Web サービス・スタブを作成すると、テスト対象 Web サービスをよりよく分離できます。あるいは、完全に実装 されていない Web サービスを使用するコンポーネントをテストすることができます。

Web サービス・スタブ は、実行時にサーバー上にデプロイされます。デプロイされたスタブが例外をスローする場合には、実際のスタブ ではなく、サーバーからカプセル化された例外メッセージを受信します。

関連概念
スタブ・データ・テーブル
コンポーネント・テストと Java エディター
関連タスク
Java コンポーネント用のスタブの作成
EJB のスタブの作成
テスト・スイート内のスタブの編集
初期化ポイントの挿入
検証アクションの挿入
タイミング制約の挿入
フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.