1

まず、私のセットアップは次のとおりです。

  • アプリサーバー: jBoss 4.2.3GA
  • 使用フレームワーク: Struts 2、EJB3
  • DBMS: PostgreSQL 9.0.3

デフォルトでは、セキュリティ上の理由から、Bean を常に @Local に設定しています。必要がない場合、同じコンテナー内の他のアプリケーションへの扉を開きたくありません。

現在、私はテストを使用して開発を推進することに注力しています (テスト駆動開発)。そこで、アプリケーションと同じプロジェクトにテストをコーディングしたり、テスト機器 (EasyMock、jUnit、StrutsTest など) をインストールしたりすることを避けるために、テスト用に別のプロジェクト (一種のテスト プロジェクト) を作成しました。

つまり... つまり、Bean を @Remote に設定して、jUnit テスト クラスからアクセスできるようにします。

私の質問は次のとおりです。条件付きコンパイル/ビルドのようなものを使用して @Local から @Remote に切り替える方法はありますか? Bean を毎回 Local に戻さなければならないのは、かなり面倒で退屈です。すべての開発者は、リファクタリングが問題を引き起こすことを知っているので、Bean の可視性を管理する適切な方法を見つけようとしています。もう 1 つのアイデアは、プロパティまたは XML ファイルからのものであるため、必要に応じて 1 つのことをオンまたはオフにするだけで済みます。

テストするすべての Bean に対して、次のことを行う必要があります。 - インターフェースを @Remote に設定します。

何か案が?

どうもありがとうございました

チャールズ

4

2 に答える 2

2

よくわかりましたが、ユニット テストからアプリケーション サーバーに接続して、リモート EJB にアクセスしますね。

私はここ数年、EJB を扱っていませんが、リモート通信なしで EJB を単体テストする方法は 2 つあります。

  1. 組み込みコンテナーを使用します。ユニット テストへの EJB 3.1 コンテナーの組み込みを参照してください。
  2. EJB をプレーンな Java クラスとして使用し、依存関係を自分でモックします。「 Java EE の単体テスト」を参照してください。特定のイベントに対して特定の値を返すようにモックを構成できます。

それが役に立てば幸い。

于 2012-11-01T15:58:17.083 に答える
0

組み込みコンテナーを使用する代わりの別のオプション
(JBoss 組み込みコンテナーはかなり悪い形です。私は恐れています :( )は、デプロイ API を備えたArquilian
のようなツールを使用し、テスト コードを介して生成された「ミニ エンタープライズ アプリケーション」を作成できます。 、EJB を格納し、アプリケーション サーバーにデプロイします。

于 2012-11-01T18:28:22.493 に答える