2017-10-17 18 views
0

Maven自動テストのスイートとCucumber自動テストのスイートを含むJavaプロジェクトを作成しています。私はこれが理想的ではないことを認識していますが、異なるテストスイートは、プロジェクトのさまざまな段階で異なるサブチームによって作成されました。今後は、このプロジェクトをより小さなプロジェクトに分割するつもりですが、今はこのミックスに悩まされています。pom.xmlでMavenプラグインを2回設定する

surefireプラグインを使用してMavenからこれらのテストを実行できますが、pom.xmlではプラグインをそれぞれ別に設定する必要があります。 Cucumberについては

我々はcucumber-jvm-parallel-pluginと一緒にそれを使用していて、それがこのように構成され、:私たちのTestNGのテストのために

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.20.1</version> 
      <configuration> 
       <forkCount>${threads}</forkCount> 
       <reuseForks>true</reuseForks> 
       <includes> 
        <include>**/Parallel*IT.class</include> 
       </includes> 
      </configuration> 
     </plugin> 

、このように構成されています

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.20.1</version> 
      <configuration> 
       <suiteXmlFiles>${file}</suiteXmlFiles> 
       <skipTests>false</skipTests> 
       <properties> 
        <property> 
         <name>suitethreadpoolsize</name> 
         <value>${threads}</value> 
        </property> 
       </properties> 
      </configuration> 
     </plugin> 

我々はありませんMavenエキスパートなので、現時点では、実行しているスイートには使用したくないプラグインのバージョンをコメントアウトするだけです。明らかにこれは厄介であり、ベストプラクティスではないので、私はこれにどのように対処すべきかについてのアドバイスについて非常に感謝しています。 pom.xmlにプラグインを正当に2回定義でき、何らかの形でフラグを渡してどのバージョンを実行するのかを指定できますか?私の質問を読んでくれてありがとう。

+0

インテグレーションテストは、デフォルトの命名スキーマを持つmaven-failsafe-plugin ...を使用して行う必要があります。 – khmarbaise

答えて

1

使用maven profiles適切な構成を選択するには:このスニペットを追加

を:

<profiles> 
    <profile> 
     <id>Cucumber</id> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <configuration> 
        <forkCount>${threads}</forkCount> 
        <reuseForks>true</reuseForks> 
        <includes> 
         <include>**/Parallel*IT.class</include> 
        </includes> 
       </configuration> 
      </plugin> 
     </plugins> 
    </profile> 
    <profile> 
     <id>TestNG</id> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <configuration> 
        <suiteXmlFiles>${file}</suiteXmlFiles> 
        <properties> 
         <property> 
          <name>suitethreadpoolsize</name> 
          <value>${threads}</value> 
         </property> 
        </properties> 
       </configuration> 
      </plugin> 
     </plugins> 
    </profile> 
</profiles> 

とコマンドラインで目的のプロファイルをpecifyする必要があり、この

<plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.20.1</version> 
    </plugin> 
    <!-- delete on of the entries --> 
</plugins> 

を変更する:

mvn test -P Cucumber 
    mvn test -P TestNG 

ビットあなたも一度に両方を実行することができます。

mvn test -P Cucumber -P TestNG 
mvn test -P Cucumber,TestNG 
+0

また、テスト用のプロファイル(cukeとTestNG)も追加できます。煙、フルなど。 – dimyo

+0

私は上記の変更を加え、私のテストは現在、必要に応じて動作しています。私はその答えに非常に感謝しています。ありがとうございました。 –

1

は、実行するテストの各セットのための下流のMavenプロジェクトを作成します。より多くの作業を前面に出すが、かなり早い段階で報酬を得る。

+0

はい、良い答えです - ありがとうございます。これは長期的な計画になります。短期的には、私は他の答えで提案を実装し、彼らは素晴らしい仕事をした。 –

+0

あなたのためにうまくいくソリューションが見つかりました。プロファイルによって再現可能なビルドを作成することが難しくなることがわかりました。それはあなたと関連しているかもしれません。 –

関連する問題