1

私は現在、バージョン 3.1 で EJB をテストするというテーマに取り組んでいますが、その経験は少ししかありません。そこで、文献を調べたところ、EJB をテストする 3 つの異なる方法 (バージョン 3.0 以降) が見つかりました。

1) シンプルな POJT (Plain Old Java Tests) の使用

2) 組み込みコンテナの使用

3) アプリケーションサーバーでのアプリケーションのテスト

これらのさまざまな方法を理解した後、自分で調査を開始し、いくつかの可能性を見つけました。

ケース 1) の場合、JUnit や TestNG などのツールはほぼ完璧であり、注釈の問題を解決するためにライブラリ EasyGloss を使用できます。非常に単純な Bean の場合、EasyGloss は必要ありません。「ローカル」テストは、Bean がコンテキスト (例: sessionContext) へのアクセスを必要とし、トランザクションまたはインターセプターを使用するまで正常に機能します。

私は JBoss AS 7.1.1 を使用していますが、私が知る限り、このアプリケーション サーバーは組み込みコンテナを提供していません。そのため、Glassfish (私が好まないもの) に切り替えるか、OpenEJB や Arquillian などの代替手段を使用して、ケース 2 のテストを処理できます)。

皆さんには、Jave EE と EJB のテストに関する経験と知識が豊富にあることを知っています。そこで、あなたの経験を私と共有し、いくつかのヒントやコツ、より多くの考え、ejb の効率的なテストのコード例を教えていただけないでしょうか。

編集: ケース 1) に関する詳細情報を追加しました。

4

2 に答える 2

1

Vineet が指摘したように、JBoss Embedded Containerがあります。ただし、AS 固有のクラスを使用しない限り、組み込みの Glassfish コンテナーを使用するときに問題は発生しません (簡単な例を次に示します)。組み込みコンテナーは、提供されている EJB インフラストラクチャーを集中的に使用する場合に特に興味深いものです。あなたがインターセプター、トランザクションなどについて言及したように。そうでなければ、単純な単体テストと比較した利点はそれほど大きくありません。

アプリケーション サーバーでアプリケーションをテストし、コンポーネントがリモート Bean である場合、ユニット テストで JNDI ルックアップを介して直接テストできます。リモート Bean をテスト フックとして統合することもできます。ただし、Arquillian は、リモートでアクセスできないため、CDI またはローカル Bean をテストする場合に特に興味深いものです。

組み込みコンテナーや Arquillian などのツール/テクノロジーを単純な単体テストと比較することは不可欠だと思います。大きな利点はありますか?ツールなしではカバーできないテストはありますか? 何かが新しくてクールだからといって、必ずしもそれから恩恵を受けるとは限りません:)

于 2012-11-07T13:49:54.930 に答える
1

組み込みコンテナは EJB 3.1 の一部であるため、JBoss AS 7 でも実装する必要があります。

Arquillian も非常に優れたオプションです。AS 7 は非常に高速に起動するため、外部 AS の余分なオーバーヘッドはそれほど大きくありません。

Arquilluan と AS 7 が提供する組み込みコンテナーを組み合わせることもできます。

于 2012-11-03T12:31:08.870 に答える