0

私の制約のいくつかを説明しましょう。

CXFSoapサービスとSpringMVCRESTサービスを使用する戦争があります。CXFとSpringMVCの両方の実装は別々のjarにあり、依存関係として取り込まれます。RESTサービスのプロジェクトには単体テストがあります。

RESTjarで「mvncleantest」のようなことをしながら、ローカルバージョンのwarをセットアップしてから、単体テストを実行する方法があるかどうか疑問に思いました。したがって、Hudsonのようなものを組み込んだり、リリースを行ったりする場合、回避策(スナップショットイヤーのデプロイやローカル戦争の手動実行など)は必要ありませんか?テストが貨物を使用して戦争内にあるときにこれが行われるのを見ましたが、テストが戦争から分離されているときはそうではありません。

今のところ、テストを別のjarに移しますが、リリース中に問題が発生した場合、つまりRESTjarとwarがすでにリリースされているかのように理想的ではありません。上記の方法で、RESTサービスと同じプロジェクトでテストを行うことをお勧めします。

誰かがこれを助けることができるポインタまたはドキュメントまたは例を持っているならば、それはありがたいです。

4

2 に答える 2

1

Maven には統合テスト段階もあります。maven-jetty-plugin を使用してコンテナーを起動し、アプリケーションをデプロイします。次に、統合テストを実行します。

アップデート

テストを jar ファイルにすることはできません。Maven Surefire プラグインはそれらを実行できませんでした。テストは、統合テストを実行するプロジェクトの一部です。テストした war ファイルは、依存ライブラリとして設定できます。ダウンロードされて展開され、統合テストが実行されます。

于 2010-09-09T21:45:44.677 に答える
1

正直なところ、すべての制約を理解できたかどうかはわかりません。とにかく、Maven との統合テストを実装するための推奨される方法は、テスト対象の war/ear に依存する別のモジュールにそれらを配置することです (特に、テスト対象のモジュールに単体テストもある場合は、はるかに簡単です)。

  1. コンテナを開始し、pre-integration-testフェーズ中に war/ear を展開します
  2. Maven にテストを実行させるintegration-test
  3. 途中でコンテナを停止post-integration-test

ステップ 1 と 3 では、個人的に Cargo を使用します。ステップ 2 では、Maven Failsafe プラグインの使用が推奨されるオプションです (テストが失敗してもビルドが停止しないため)。少なくとも、これは私が使用しているものであり、以下のリソースを使用してセットアップを構築しました.

別のアプローチは、テストから埋め込みコンテナーを開始/停止することです。たとえば、これは Jetty で実行できます。「Jetty の埋め込み」および「Jetty を使用した単体テスト サーブレット」を参照してください。

資力

于 2010-09-11T10:20:50.323 に答える