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

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 の場合のライフ・サイクル・テスト・パターン

ライフ・サイクル・テスト・パターンを使用してステートレス・セッション 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("",...);

     CardAccount cardAccount=cardAccountHome.findByPrimaryKey(accountId2);

     bankAccount.withDraw(amount);

     cardAccount.deposit(amount);

}

transferFunds メソッドを調べると、このメソッドが以下のことを行うことに気付きます。

このケースでは、TransferFunds EJB がファサードで、テスト対象のサブシステムは BankAccount EJB と CardAccount EJB から構成されています。 自動化コンポーネント・テスト (Automated Component Testing) を使用して、サブシステム内のメソッド (つまり、findByPrimaryKey、findByPrimaryKey、withDraw、および deposit) 用のテストを生成できます。

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