2011-12-05 17 views
4

最近、大規模なレガシーエンタープライズJavaアプリケーションの作業を開始しました。主にWebsphere Commerce 6上に構築されています。これには、EJB 1.xと2.xが混在しており、Commerce APIに直接フックするかなりのコードが含まれています。ArquillianでレガシーJava EEアプリケーションを統合する

私は最初に単体テストを導入し、依存関係を壊し、コードの小さな部分を慎重にリファクタリングしようとしました。私たちは、統合テストフレームワークを使用してテストを作成するプロセスを脆弱で時間のかかるものにするという考えを探ってきました。

Arquillianは、統合テストのための非常に良いオプションとして提案されています。しかし、より現代的なアプリケーションに向いているように見えます。ほとんどの例でJava EE 5+とMavenを使用しています。私たちはJ2EEとAntを使用しています。現在もJava 1.4に縛られていますが、Java 5に移行する可能性はありますが、すぐにEJB 3.xにアップグレードすることはありません。私たちはまた、Antに固執する可能性が高いです。

これらの制約を念頭に置いて、Arquillianを使用できますか?また、レガシーエンタープライズJavaアプリケーションの統合テストのためのより良い代替手段が存在しますか?

答えて

4

Arquillianは統合テストのための非常に良いオプションとして提案されています。しかし、より現代的なアプリケーションに向いているように見えます。ほとんどの例でJava EE 5+とMavenを使用しています。私たちはJ2EEとAntを使用しています。現在もJava 1.4に縛られていますが、Java 5に移行する可能性はありますが、すぐにEJB 3.xにアップグレードすることはありません。私たちはまた、Antに固執する可能性が高いです。

これらの制約を念頭に置いて、Arquillianを使用できますか?

注:私はArquillianの投稿者です。私は私の答えで不公平にしようとしました。

これは実際にテストがどのように実行されるかによって異なります。容器内テストにArquillianのサポートを使用しようとしている場合は、解決策を見つけることはまずありません。 WebSphere Commerce 6はWebSphere 6.0を基本コンテナーとして使用しますが、現時点ではArquillianではサポートされていません。 WAS 7.0または8.0を基礎とするWebSphere Commerceのバージョンを仮説的に使用することができれば、これらのコンテナーはサポートされているので、私の答えのほとんどは無視できます。

コンテナではなく、@RunAsClientアノテーションを使用してクライアントからテストを実行しようとすると、成功する可能性が高くなります。前述のArquillianのWAS 6のサポートがないため、@Deployment注釈付きメソッドを使用しないで、何らかの方法でデプロイメントを実行する必要があります。

MavenではなくAntを使用する場合、唯一の要件はすべての依存関係がクラスパスに存在することです。残念ながら、Arquillianのためのuber JARや配布はありません。今のところ、すべての依存関係を事前に知る必要があります。

注 - Arquillianについては、WebSphere 6.0のサポートでビルは他のより最近のコンテナと比較して、些細な活動ではないかもしれない:

  • はまず、アーカイブを展開するための手段があることがあります。 WebSphere 7および8コンテナサポートで使用されているメカニズムを移植できるかどうかはわかりません。
  • Arquillian for WAS 6.0のコンテナ内テストをサポートするには、テストを実行するためにServlet 2.4プロトコルをサポートする必要があります。現在、ArquillianはServletTestRunnerをパッケージ化するためにServlet Spec 2.5と3.0をサポートしています。これはもちろん、JMXプロトコルと付随するJMXTestRunnerを使用できない場合に必要です。

それとも、より良い代替案は、統合テストのレガシーエンタープライズJavaアプリケーションのために存在するのですか?

私は普通functional testingレガシーアプリケーションのためのCargoとJUnitのミックスを使用する人々を助言するが、それでも貨物は、WebSphere 6.0をサポートするためには表示されません。

アーカイブにJUnitEE TestRunnerをパッケージ化したい場合は、JUnitEEがあなたのニーズに適しているかもしれません。 JUnitEEの最後のリリースは2004年であり、mailing listは少し非アクティブなので、YMMVです。

+0

ありがとうございました!私は、JUnitEEを当面探求し、WSC 7.0にアップグレードする場合、Arquillianを再評価する予定です。 –

関連する問題