Enterprise JavaBeans 用のテスト・パターン

EJB テスト・パターンを EJB テスト・プロセスで使用すると便利です。これらのテスト・パターンには、EJB ライフ・サイクル・テスト・パターン、EJB ビジネス・ロジック・テスト・パターン、および EJB セッション・ファサード・テスト・パターンが含まれます。

「EJB テストの作成」ウィザードを使用すると、EJB をリモート・インターフェース (リモートおよびホーム) を介してリモートからテストすること、あるいはローカル・インターフェース (ローカルおよびローカル・ホーム) を介してローカルにテストすることができます。ローカルにテストする場合は、テスト対象の EJB と同じアプリケーション・サーバーにテストをデプロイします。

注: 同じコンポーネント・テストまたはテスト・スイート内では、EJB をローカル・インターフェースとリモート・インターフェースの両方を 介してテストすることはできません。ローカル・インターフェースを介してテストを行うためにコンポーネント・テストを作成し、さらに、リモート・インターフェースを介してテストを行うためにもう 1 つのコンポーネント・テストを作成する必要があります。これら 2 つのコンポーネント・テストは同じテスト・プロジェクトに保管できます。

EJB ライフ・サイクル・テスト・パターン

EJB ライフ・サイクル・テスト・パターンは、EJB のライフ・サイクル・メソッド (Bean の新規作成用、Bean の除去用、および Bean の検索用) を検査するためのテストの作成に使用します。ローカル・ホームまたはホーム・インターフェース内で公開されているそれぞれのライフ・サイクル・メソッドごとに、対応するコールバック・メソッドが EJB の Bean クラス内に存在し、それらのコールバック・メソッドの実装はこの Bean クラスで定義されています。例えば、ホーム・インターフェース内の create メソッドについては、そのそれぞれと対応する ejbCreate メソッドが Bean クラス内に存在します。

ライフ・サイクル・パターンは、コールバックを失敗させる可能性のある数種類のシナリオをシミュレートしてコールバック・メソッドをテストするのに役立ちます。ステートフル・セッション Bean とエンティティー Bean の場合、このテスト・パターンは Bean の状態が正しいかどうかも検査します。ライフ・サイクル・テスト・パターンの一例として、Bean クラスのフィールドの値をテストする ことが挙げられます。これらの値をテストするには、分かりやすいデータをテスト・データ・テーブルに提供してください。

ライフ・サイクル・パターンから、予期されるシナリオ用のテスト・コードが Bean のタイプごとに自動的に生成されるので、EJB をテストする作業が単純化されます。

ステートレス・セッション Bean の場合のライフ・サイクル・テスト・パターン

ライフ・サイクル・テスト・パターンを使用してステートレス・セッション Bean をテストする 場合は、EJB の Bean クラスで実装されている ejbCreate() および ejbRemove() コールバック・メソッドを テストするためのコードが生成されます。テスト対象となるのは以下のコールバック・メソッドです。

以下のテスト・シナリオが含められます。

ステートフル・セッション Bean の場合のライフ・サイクル・テスト・パターン

ライフ・サイクル・テスト・パターンを使用してステートフル・セッション Bean をテスト する場合は、ejbCreate() および ejbRemove() のテスト用に生成されるコードに加えて、Bean の状態をテストするためのコードも生成されます。テスト対象となるのは以下のコールバック・メソッドです。

以下のテスト・シナリオが含められます。

Bean 管理パーシスタンスおよびコンテナー管理パーシスタンスを持つエンティティー Bean の場合のライフ・サイクル・テスト・パターン

ライフ・サイクル・テスト・パターンを使用してエンティティー Bean をテストする場合は、パーシスタンスとデータベース・ルックアップをテストするための追加のコードも生成されなければなりません。 テスト対象となるのは以下のコールバック・メソッドです。

以下のテスト・シナリオが含められます。

EJB ビジネス・ロジック・テスト・パターン

EJB ビジネス・ロジック・テスト・パターンは、ビジネス・ロジックの検証に使用します。ビジネス・ロジックは、通常はセッション Bean に実装されます。ただし、エンティティー Bean にビジネス・ロジックが含まれている場合もあります。必ず、ビジネス・ロジック自体 (つまり、パラメーター内のデータを処理するアルゴリズム) をテストしてください。 また、テスト・データ・テーブルを使用して、データ駆動型のテストを広い範囲の入力データに対して行ってください。

EJB セッション・ファサード・テスト・パターン

EJB セッション・ファサード・テスト・パターンは、 セッション・ファサード・デザイン・パターンの実装をテストするのに使用します。このデザイン・パターンは、高水準のビジネス・ロジック・インターフェースを提供して、アプリケーションの複雑さをクライアントから隠し、パフォーマンスを向上させることを目的として使用されます。セッション・ファサード・デザイン・パターンは、既知の J2SE ファサード・パターンの EJB バージョンです。セッション・ファサード・テスト・パターンは、ローカル・エンティティー Bean を呼び出すセッション Bean のテストによく使用されます。セッション・ファサード・テスト・パターン は、セッション Bean 用およびセッション・ファサードによって呼び出されるサブシステム (通常はエンティティー Bean) にあるメソッド用のテストを生成します。テスト・ウィザードのページでは、EJB (通常はセッション Bean) とそのビジネス・インターフェース内の一連のメソッドを選択できます。

例えば、以下の 3 つの EJB から構成されるサブシステムの場合を考えてみましょう。

以下のコードに示されているように、TransferFunds EJB には transferFunds メソッドが含まれています。

public void transferFunds(String accountId1, String accountId2, int amount){

     BankAccountHome bankAccountHome=getHome("",...);

     BankAccount bankAccount=bankAccountHome.findByPrimaryKey(accountId1); 
     CardAccountHome cardAccountHome=getHome("",...);


     CardAccountHome cardAccountHome=getHome("",...);     
     CardAccount cardAccount=cardAccountHome.findByPrimaryKey(accountId2);

     bankAccount.withDraw(amount);

     cardAccount.deposit(amount);

}

transferFunds メソッドは、以下のメソッドを呼び出します。

このケースでは、TransferFunds EJB がファサードで、テスト対象のサブシステムは BankAccount EJB と CardAccount EJB から構成されています。「テストの作成」ウィザードを使用して、 ファサードにあるメソッドと、ファサードによって呼び出されるサブシステムにあるメソッド、 つまり 2 つの findByPrimaryKey メソッドと withDraw および deposit メソッド用のテストを生成できます。

関連概念
テスト生成プロセス
標準 Java テスト・パターン
関連タスク
新規コンポーネント・テスト・プロジェクトの作成
エンティティー Bean のライフ・サイクル・メソッド用テストの作成
セッション Bean のライフ・サイクル・メソッド用テストの作成
EJB ビジネス・メソッド用のテストの作成
EJB セッション・ファサード用のテストの作成
フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.