13

TestNG には多くのテスト スイートがあります。これらは XML ファイルです。maven から統合テストを実行するときに、複数の XML スイートを選択できるようにしたいと考えています。

現在、次のようにスイートファイルを pom.xml に追加できます。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <suiteXmlFiles>
      <suiteXmlFile>${pathToMySuiteFile_1}</suiteXmlFile>
      <suiteXmlFile>${pathToMySuiteFile_1}</suiteXmlFile>
    </suiteXmlFiles>
  </configuration>
</plugin>

このソリューションにはいくつかの制限があります。pom.xml で定義したテスト スイートへのパスのみを変更できます。したがって、私の例では、常に 2 つのファイルである必要があります。たとえば、5 つのスイートまたは 1 つのスイートを実行できません。

pom.xml のセクション「suiteXmlFiles」全体を何とかパラメータ化する方法はありますか?

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <suiteXmlFiles>
      ${multiple_paths_ToMySuiteFiles}
    </suiteXmlFiles>
  </configuration>
</plugin>

与えられたテスト グループに一致するものすべてを実行することは、私にとって選択肢ではありません。持っているすべてのスイートをロードしてから、TestNG スイートのグループを使用して選択したテストだけを実行したくありません。グループ フィルターを使用してすべてのテスト スイートを実行した後に生成されるレポートは、選択したテスト スイートのみを実行した場合のレポートとは異なるためです。

4

3 に答える 3

10

テストでもこの問題に遭遇しました。現在使用している回避策は、プロパティ セクションでプロパティ変数を定義し、それを確実な suiteXmlFiles ブロックに挿入することです。

<properties>
    <!-- Default suites -->
    <batsSuiteFile>${project.build.testOutputDirectory}/BatsTests.xml</batsSuiteFile>
    <smokeSuiteFile>${project.build.testOutputDirectory}/SmokeTests.xml</smokeSuiteFile>

    <!-- Default suite files if not being specified from mvn command line -->
    <defaultSuiteFiles>${batsSuiteFile},${smokeSuiteFile}</defaultSuiteFiles>
    <suiteFile>${defaultSuiteFiles}</suiteFile>
</properties>

次に、プラグインセクションで...

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.12</version>
    <configuration>
       <suiteXmlFiles>
          <!-- Suite file injection parameter from command line -->
          <suiteXmlFile>${suiteFile}</suiteXmlFile>
       </suiteXmlFiles>
    </configuration>
</plugin>

コマンド ラインから何も指定されていない場合は、フォールバックし、上記のプロパティ セクションで指定された 2 つのスイートにデフォルト設定されます。次に、指定した一連のスイート ファイルを開始する場合は、次のようにします。

mvn test -DsuiteFile=test1.xml,test2.xml

驚くべきことに、maven docs から、引数 suiteXmlFiles はコマンドラインからこれをオーバーライドする必要があり、testng xml のカンマ区切りのリストを受け入れる必要があると予想されます http://maven.apache.org/plugins/maven-surefire-plugin/test- mojo.html#suiteXmlファイル

他に良い方法がある場合は、共有してください。

于 2012-12-11T22:59:31.910 に答える
0

groupsパラメーターを使用するか、コマンドラインで-Dgroups=...を指定できます。

(JUnit4.8+のみのTestNG/ JUnit47プロバイダー)このテストのグループ。ここで指定されたグループの1つで装飾されたクラス/メソッドなどのみが、指定されている場合、テスト実行に含まれます。JUnitの場合、このパラメーターは4.7プロバイダーの使用を強制します。suiteXmlFilesパラメーターが指定されている場合、このパラメーターは無視されます。。

于 2012-07-09T15:03:23.750 に答える