3

TestNg と Maven を Surefire プラグインと共に使用して、テストを実行しています。同じ pom を使用して異なる時間に実行できるようにしたいいくつかの異なるコンポーネントがあります。現在、これを行うために、テストスイートを定義するいくつかの異なる XML ファイルがあり、pom をセットアップしているので、 mvn test -Dtestfile=/path を実行して代わりにそのスイートを使用できます。

XML ファイルを 1 つのファイルに結合し、テスト名または他のシステムからベースを選択する方法があるかどうか疑問に思っていましたか?

編集: 私はすべてのテストを Smoke、Sanity、Regression で定義しており、特定のコンポーネントに対してすべての Regressions を実行できるようにしたいと考えています。TestNG CLI を実行すると、-testnames comp1、comp2、comp3 などを指定できます。各コンポーネントは、複数のテストを含む 1 つの xml スイートで定義されます ()。exec:java プラグインを使用する以外に、maven でこれを行う方法があるかどうか疑問に思っていました。

4

3 に答える 3

8

TestNGは、テストケース自体またはsuite.xmlファイルでテストクラス/メソッドのグループを指定することにより、テストのグループをサポートします。グループを使用することで、すべてのテストを1つのxmlファイルに入れることができます。TestNGユーザーガイドのグループを参照してください。

surefireプラグインを使用すると、グループに基づいてテストを含めたり除外したりできます。

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.8.1</version>
        <configuration>
          <groups>${testng.groups}</groups>
        </configuration>
      </plugin>

すべてのテストを1つのxmlファイルに入れてから、グループ名のコンマ区切りリストである$ {testng.groups}プロパティに含めるグループを設定することにより、実行するテストを選択できます。

$ {testng.groups}プロパティの値は、プロファイルを使用してPOMで、またはコマンドラインで定義できます-Dtestng.groups=[groups to run]

于 2011-04-19T19:12:36.650 に答える
6

できることは、さまざまなプロファイルを定義することです

  <profiles>
    <profile>
      <id>t1</id>
      <build>
        <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.8.1</version>
          <configuration>
            <suiteXmlFiles>
              <suiteXmlFile>testng.xml</suiteXmlFile>
            </suiteXmlFiles>
          </configuration>
        </plugin>
      </plugins>
      </build>
     </profile>
   </profiles>

mvn -Pt1 を介してコマンドラインから呼び出すか、プロファイルでプロパティを定義し、そのプロパティを構成で使用します。

于 2011-04-19T19:02:52.277 に答える
2

また、TestNG を使用すると、複数のスイートを 1 つに結合できることにも注意してください。たとえば、API と UI のスモーク テストを 1 つのスイートに結合する場合は、次のようにします。

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="uber-smoke-suite" verbose="1" parallel="methods" thread-count="1" configfailurepolicy="continue">
  <suite-files>
    <suite-file path="smoke_api.xml" />
    <suite-file path="smoke_ui.xml" />
  </suite-files>
</suite>

そうすれば、すべてのテストを 1 つにまとめた uber スイートも作成できますが、必要に応じて単一のスイートを実行することもできます。

-Dtestfile=smoke
-Dtestfile=smoke_api
-Dtestfile=smoke_ui
于 2016-11-05T05:20:15.033 に答える