3

最近、プロジェクトを ant から maven に移行し始めました。アプリケーションには、maven を使用してビルドできる 2 つのモジュールがあります。

これで、UI 機能をテストするために Web ドライバーを使用する自動テスト プロジェクトが作成されました。私がmavenを使用してやろうとしていることは、両方のモジュール戦争を構築し、それらをTomcatに展開することです. 次に、それらに対して自動化テストを実行し、自動化テストに合格した場合はビルドに合格します。私はこのようにpomを設定しました(重要な部分に言及するだけです):

<packaging>pom</packaging>
<modules>
        <module>../module1</module>
        <module>../module2</module>
</modules>

これで、両方のプロジェクトがビルドおよびデプロイされますが、自動化テストは実行されません。と思った理由は、パッケージの種類がPOMだからです。しかし、それを戦争に変更すると、エラーがスローされ始めます。

自動化用に 3 番目の pom を作成し、それをモジュールとして含める親 pom を作成することも考えられます。しかし、私はこれが正しい方法であるかどうかを考えています。これは非常に一般的なシナリオであり、maven はそれを直接サポートする必要があります。

4

3 に答える 3

4

(...)自動化モジュールは、UIをテストするためのWebDriverベースの自動化テストです。Web戦争に依存しますが、パッケージの依存関係はありません。カーゴメイヴンプラグインを使用してTomcatにデプロイしています。自動化テストを実行する直前に、ソースからその場でWeb戦争を構築し、Tomcatにデプロイしてから、テストを実行したいと思います。ant buildを使用してこれらすべてを実行できますが、Mavenを使用できません

これは間違いなく実行可能です(そして私は何度もそれを実行しました)。しかし、現在のプロジェクト構造(特に、テストが配置されている場所)を理解することはできません。

これが私が提案する構造です:

。
├──functests
│├──pom.xml//ここでは、貨物を実行するようにMavenを構成してテストします
│└──src
│└──それ
│├──java
││└──...//機能テストはここに行きます
│└──リソース
├──pom.xml//pomを集約する
└──mywebapp//テスト中のアプリケーション
    ├──pom.xml
    └──src
        ├──メイン
        │├──java
        │├──リソース
        │└──webapp
        └──テスト
            ├──java
            └──リソース

また、pomセットアップの詳細については、Maven、Cargo、およびSeleniumを使用した機能テストを参照してください。必要なすべての詳細が含まれています。

于 2010-10-08T04:07:27.483 に答える
1

統合テスト モジュールを共有する 2 つの war モジュールは、非常に一般的なシナリオではないと思います。

ただし、これをHudsonで動作させることができます。

  • Hudson でジョブをセットアップして、親レベルの pom をデプロイします。これにより、現在のように war モジュールがデプロイされます。
  • 前のジョブが成功したら、別のジョブをトリガーして統合テストを実行します。

プロファイルを使用して統合テストを有効にしたり、より具体的には、最初のジョブ中に統合テストが実行されないようにすることができます。

今年の初めに、基本的な Hudson サーバーを約 1 時間でセットアップしました。
Hudson は Maven ビルドを直接サポートしており、すべての品質レポートなどを含む、プロジェクトの Maven サイトの場所も提供し
ます。SCM を「監視」するように Hudson を構成し、コミットを識別したときにビルドを開始することもできます。

于 2010-10-07T16:25:33.510 に答える
0

「3番目のpomを作成することを考えることができます」
POMは2つしかありませんか?各プロジェクト/モジュールには独自のPOMが必要です。

Mavenとの統合テストの詳細については、http://docs.codehaus.org/display/MAVENUSER/Maven+and+Integration+Testingを参照してください

編集: あなたのプロジェクトのレイアウトがどのように見えるか正確にはわかりません。しかし、私はそれがどういうわけかこのように見えるはずだと思います:

ファイル構造

myWebApp/
    pom.xml
    myWebApp-web/
        pom.xml
    myWebApp-integration-tests/
        pom.xml

/myWebApp/pom.xml

<packaging>pom</packaging>
<modules>
    <!-- packaging: war; here are the sources and unit tests -->
    <module>myWebApp-web</module>

    <!-- packaging: java; here are the integration tests -->
    <module>myWebApp-integration-tests</module>
</modules>

この設定で/myWebApp/mvn deployは、次の手順を実行します。

  1. ルートプロジェクトをビルドします(ソースがないため、何もしません)
  2. myWebApp-webをビルドする
  3. myWebApp-webをデプロイします(で構成する必要があります/myWebApp/myWebApp-web/pom.xml
  4. myWebApp-integration-testsでテストを実行します

これはあなたが望むことをするはずです。

于 2010-10-07T08:56:57.297 に答える