EJB テスト・パターンを EJB テスト・プロセスで使用すると便利です。これらのテスト・パターンには、EJB ライフ・サイクル・テスト・パターン、EJB ビジネス・ロジック・テスト・パターン、および EJB セッション・ファサード・テスト・パターンが含まれます。
「EJB テストの作成」ウィザードを使用すると、EJB をリモート・インターフェース (リモートおよびホーム) を介してリモートからテストすること、あるいはローカル・インターフェース (ローカルおよびローカル・ホーム) を介してローカルにテストすることができます。ローカルにテストする場合は、テスト対象の EJB と同じアプリケーション・サーバーにテストをデプロイします。
EJB ライフ・サイクル・テスト・パターンは、EJB のライフ・サイクル・メソッド (Bean の新規作成用、Bean の除去用、および Bean の検索用) を検査するためのテストの作成に使用します。ローカル・ホームまたはホーム・インターフェース内で公開されているそれぞれのライフ・サイクル・メソッドごとに、対応するコールバック・メソッドが EJB の Bean クラス内に存在し、それらのコールバック・メソッドの実装はこの Bean クラスで定義されています。例えば、ホーム・インターフェース内の create メソッドについては、そのそれぞれと対応する ejbCreate メソッドが Bean クラス内に存在します。
ライフ・サイクル・パターンは、コールバックを失敗させる可能性のある数種類のシナリオをシミュレートしてコールバック・メソッドをテストするのに役立ちます。ステートフル・セッション Bean とエンティティー Bean の場合、このテスト・パターンは Bean の状態が正しいかどうかも検査します。ライフ・サイクル・テスト・パターンの一例として、Bean クラスのフィールドの値をテストする ことが挙げられます。これらの値をテストするには、分かりやすいデータをテスト・データ・テーブルに提供してください。
ライフ・サイクル・パターンから、予期されるシナリオ用のテスト・コードが Bean のタイプごとに自動的に生成されるので、EJB をテストする作業が単純化されます。
ライフ・サイクル・テスト・パターンを使用してステートレス・セッション Bean をテストする 場合は、EJB の Bean クラスで実装されている ejbCreate() および ejbRemove() コールバック・メソッドを テストするためのコードが生成されます。テスト対象となるのは以下のコールバック・メソッドです。
以下のテスト・シナリオが含められます。
ライフ・サイクル・テスト・パターンを使用してステートフル・セッション Bean をテスト する場合は、ejbCreate() および ejbRemove() のテスト用に生成されるコードに加えて、Bean の状態をテストするためのコードも生成されます。テスト対象となるのは以下のコールバック・メソッドです。
以下のテスト・シナリオが含められます。
ライフ・サイクル・テスト・パターンを使用してエンティティー Bean をテストする場合は、パーシスタンスとデータベース・ルックアップをテストするための追加のコードも生成されなければなりません。 テスト対象となるのは以下のコールバック・メソッドです。
以下のテスト・シナリオが含められます。
EJB ビジネス・ロジック・テスト・パターンは、ビジネス・ロジックの検証に使用します。ビジネス・ロジックは、通常はセッション Bean に実装されます。ただし、エンティティー Bean にビジネス・ロジックが含まれている場合もあります。必ず、ビジネス・ロジック自体 (つまり、パラメーター内のデータを処理するアルゴリズム) をテストしてください。 また、テスト・データ・テーブルを使用して、データ駆動型のテストを広い範囲の入力データに対して行ってください。
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 メソッド用のテストを生成できます。