0

アプリケーション用の統合テストを作成中ですがJava EE、1 つの点で合意できません。

組み込みサーバーと実際のサーバーで統合テストを実行する必要がありますか?

本格的な Java EE サーバーでテストを実行するメリットは本当にあるのでしょうか?

EJB実際、このアプローチには多くの問題が見られます。最大の問題は、@Remoteインターフェースまたは一部のWeb Service.

Jenkinsまた、これらの統合テストをサーバー上で実行する予定です。Glassfishアプリをパッケージ化してサーバーにデプロイする 1 つのビルド構成が既にあります。では、おそらくこれを念頭に置いて、組み込みサーバーと実サーバーのどちらを使用するかの決定に影響を与えるのでしょうか?

4

2 に答える 2

2

EJBのビューに対してテストを実行する@Localには、コンテナーをテストvmに埋め込むか、テストをコンテナーに埋め込みます。

ケーキを持って食べることもできます...両方を実行してください:)ArquillianAPIは十分に優れているため、両方を実行するように構成できる1つのテストを実行できます。

OpenEJBのような組み込みコンテナーを使用して開発するときにテストをすばやく実行し、Jenkinsで本番サーバーのように見えるものに対してテストを再実行します(これは遅くなります)。

どちらか一方だけを選択する必要があると考えることに制限しないでください。

于 2012-08-24T17:25:02.163 に答える
2

サーバーが組み込まれているかどうかは重要ではありません。ただし、非常に高速な起動と低メモリ消費が必要です。このようにして、開発者のマシンでローカルに実行できます。利点:

  • テストがより頻繁に実行され、バグがより迅速に検出されます
  • ローカルで高速に実行できると、テストの作成とデバッグが容易になります
  • (より簡単な)TDDを可能にします
  • REST API など、開発者のマシンで統合テストを実行しないと、特定の機能をまったく構築できません。

@Remoteまた、組み込みサーバーで実行される Web サービスとともに、または Web サービスとしてEJB を公開する必要はありません。実際、それらをまったく変更する必要はありません。Java EE 統合フレームワークを決定したかどうかはわかりませんが、これについてはArquilianを参照してください。

また、ローカル統合テスト用の高速 EJB コンテナーとしてOpenEJBを提案することもできます。

Jenkins の統合テストを実際の (本番) サーバーで実行すると、コミットされたコードがテストされます。もう1つのセーフティネットとして非常に便利です。ただし、開発者は、開発中およびコミット前にコードをテストする方法を自分で用意する必要があります。

于 2012-08-22T09:01:10.000 に答える