1

テストをグループに分離しようとしています。たとえば、「FULL」実行グループとより軽い「SMOKE」グループです。マスターpomに、SMOKEグループのみを実行するデフォルトのプロファイルを設定し、CIサーバーですべてのテストを実行する別のFULLグループをアクティブ化する必要があります。

ただし、maven/testngでSMOKEセットのみを実行するのに問題があります。FULLグループをexcludedGroupsに追加すると、テストは実行されません。

maven-surefire-pluginの私の効果的なpomはこれです:

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.6</version>
    <executions>
      <execution>
        <id>default-test</id>
        <phase>test</phase>
        <goals>
          <goal>test</goal>
        </goals>
        <configuration>
          <groups>USER</groups>
          <excludedGroups>FULL</excludedGroups>
        </configuration>
      </execution>
    </executions>
    <configuration>
      <groups>USER</groups>
      <excludedGroups>FULL</excludedGroups>
    </configuration>
  </plugin>

そして、私のテストクラスには次のように注釈が付けられています。

@Test(groups = { "FULL", "SMOKE" }, enabled=true)
public void testOne() { }

@Test(groups = { "FULL" }, enabled=true)
public void testTwo() { }

各クラスは、SMOKEテストグループの代表的なテストを1つ選択します。ExclusiveGroupsタグを省略し、groupsタグのみをSMOKEに設定しようとしましたが、すべてのテストが実行されます。

testngグループの階層についての私の理解を助けるための助けをいただければ幸いです。

4

1 に答える 1

1

まず、excludedGroupsでFULLを指定すると、それを含むすべてのテストケースが除外されるため、テストを実行しないことが予想されます。SMOKEのみを実行する場合は、以下のようにグループでのみSMOKEを指定します。

<plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.6</version>
          <executions>
              <execution>
                  <id>default-test</id>
                  <phase>test</phase>
                  <goals>
                      <goal>test</goal>
                  </goals>
              </execution>
          </executions>
          <configuration>
              <groups>SMOKE</groups>
          </configuration>
      </plugin>

上記の設定は私にとってはうまく機能しています。

以下のconfigはtestTwo()のみを実行します。

<configuration>
              <groups>FULL</groups>
              <excludedGroups>SMOKE</excludedGroups>
          </configuration>

明示的に除外されていてもテストケースが実行される唯一のケースは、他のテストケースがこのテストに依存し(testng'depends')、その依存するテストケースが実行に含まれる場合です。

于 2012-10-05T17:09:34.327 に答える