スタブ は、コードから呼び出される実際のクラスに置換の実装を提供するクラスです。 Java™ コンポーネント 用、Enterprise JavaBeans™ (EJB) 用、および Web サービス用のスタブを生成できます。
スタブの通常の使用目的は次のとおりです。
Java クラスのスタブを定義して、そのスタブを複数のテストで再利用できます。スタブを作成したら、その振る舞いをスタブ・データ・テーブルに定義するか、そのスタブと関連付けられているユーザー・コード・クラスにコードを入力します。
スタブ・データ・テーブルは、特定の入力に対するスタブ・クラスの出力における振る舞いを定義します。スタブ・データ・テーブルを使用し、それぞれのスタブ・メソッドごとに実際の入力値と戻り値を指定して、スタブ・クラスをシミュレートしてください。 以下のサンプル不動産アプリケーションで、スタブ・データ・テーブルの使用法を示します。
このアプリケーションでは、Lender と Appraiser という 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 メソッドの振る舞いをシミュレートできます。
スタブの振る舞いの定義は、スタブと一緒に生成されるユーザー・コード・クラスにコードを追加するという方法でも行えます。通常は、スタブの振る舞いをスタブ・データ・テーブルで実行できない場合に、スタブの振る舞いをユーザー・コード・クラスに定義します。これは、例えば次のような場合に行います。
ある特定のメソッド用としてユーザー・コード・クラスに追加したコードはすべて、スタブ・データ・テーブルに指定されている振る舞いより優先されます。
セッション Bean のテストでスタブを使用できます。例えば、そのビジネス・メソッドをまだ完全には実装していないセッション Bean 用のスタブを作成することがあります。ほとんどの場合は、エンティティー Bean をスタブする必要はありません。なぜなら、スタブを使用しなくてもエンティティー Bean を分離してテストできるからです。
EJB スタブは、実行時にサーバー上にデプロイされます。デプロイされたスタブが例外をスローする場合 には、実際のスタブではなく、サーバーからカプセル化された例外メッセージを受信します。
Web サービスの開発時にスタブを使用できます。 Web サービス・スタブを作成すると、テスト対象 Web サービスをよりよく分離できます。あるいは、完全に実装 されていない Web サービスを使用するコンポーネントをテストすることができます。
Web サービス・スタブ は、実行時にサーバー上にデプロイされます。デプロイされたスタブが例外をスローする場合には、実際のスタブ ではなく、サーバーからカプセル化された例外メッセージを受信します。