7

Mavenを使用してEARおよびEJBプロジェクトを構築しています。すべての EJB プロジェクトがビルドされ、EAR の依存関係として使用されるため、最終的に EAR ファイルにパックされます。

問題は、EJB プロジェクトごとに、EJB をチェックする JUnit テストがあることです。これらのテストは、アプリケーション サーバー (jboss) に接続し、EJB インターフェースからメソッドを実行しようとするため、現時点ではあまり役に立ちません。

EJB をビルドし、EAR をビルドしてデプロイし、アプリケーション サーバーに対してすべての EJB からすべてのテストを実行する方法はありますか?

今のところ、EJB-Implementation クラスを開始し、インジェクション (someEJBImpl.em = EntityManager....) を手動で「注入」することにより、テストで AP をシミュレートしています。自分で取引。

実際の AP に対して EJB テストを実行する他の方法はありますか? 既に構築された EJB モジュールのサブセットを使用して、各 EJB モジュールの後に EAR をデプロイできますか? しかし、どのように?

EAR テストの一部として、すべての EJB モジュールの Maven テストを実行するように設定できますか? これを行う方法 ?

4

2 に答える 2

7

これは単純な問題ではなく、簡単な答えはありません。これらの指針が役立つことを願っています。

あなたの最善の戦略は、テストを本物の単体テスト (コンテナーなしで分離して実行できるもの) に分離し、コンテナーを必要とするテストを統合テストに移動することだと思います。

Ejb3unitを使用して、コンテナの実行を必要としないテストを最大化できます。複雑な依存関係のいくつかをモックするのに役立ちます。Ejb3unit には Maven プラグインがあります。Maven リポジトリへの接続の詳細については、ドキュメントを参照してください。

JMock などの他のモック フレームワークも役立ちます。ClassImposteriserを使用すると、クラスとインターフェイスをモックできます。

EJB コンテナーが必要なテストについては、これらを統合テストとして実行するように構成できます。EJB プロジェクト間の関係によっては、それらを別のプロジェクトに移動することが理にかなっている場合があります。

JUnit テストで組み込みの Jetty インスタンスを起動し、プログラムでサーブレットを追加することができます。もちろん、Jetty は EJB コンテナーではありません。 OpenEJBのような EJB コンテナーが必要です。

OpenEJB を Jetty に構成するには、次のような構成を使用します。

<plugin>
  <groupId>org.mortbay.jetty</groupId>
  <artifactId>maven-jetty-plugin</artifactId>
  <configuration>
    <scanIntervalSeconds>5</scanIntervalSeconds>
    <contextPath>/example</contextPath>
    <systemProperties>
      <systemProperty>
        <name>java.naming.factory.initial</name>
        <value>org.apache.openejb.client.LocalInitialContextFactory</value>
      </systemProperty>
      <systemProperty>
        <name>java.naming.factory.url.pkgs</name>
        <value>org.mortbay.naming</value>
      </systemProperty>
    </systemProperties>
  </configuration>
</plugin>

OpenEJB の依存関係宣言は次のようになります。

<dependency>
  <groupId>org.apache.openejb</groupId>
  <artifactId>openejb-core</artifactId>
  <version>3.1</version>
  <scope>test</scope>
</dependency>

Seleniumを使用して機能テストを支援することもできます (ここまで到達したと仮定して) 。Selenium、Jetty、および OpenEJB を使用してこれを行うためのガイドを次に示します。

于 2009-07-27T05:15:53.713 に答える
1

JBossの場合、MavenCargoプラグインを試すことができます。現在、JBoss 5.1でテストしており、まだ作業中です。

EJBテスト用の完全なMavenCargoプラグインの例はどこにありますか?

于 2009-11-14T09:22:55.183 に答える