1

我试图将测试分成组,例如,“FULL”执行组和较轻的“SMOKE”组。我想在主 pom 中有一个默认配置文件,它只运行 SMOKE 组,然后让 CI 服务器激活一个单独的 FULL 组来执行所有测试。

但是,我在让 maven/testng 仅执行 SMOKE 集时遇到了问题。当我将 FULL 组添加到 excludeGroups 时,不会执行任何测试。

我对 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 测试组选择一个具有代表性的测试。我试图省略 excludeGroups 标记,并且只将组标记设置为 SMOKE,但随后所有测试都会执行。

任何有助于我理解 testng 组层次结构的帮助将不胜感激。

4

1 回答 1

1

首先,当您在 excludeGroups 中给出 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>

上面的配置对我来说工作正常。

下面的配置只运行 testTwo()。

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

测试用例被明确排除在外的唯一情况(我能想到的)是当其他一些测试用例依赖(testng 'depends')这个测试并且包含该依赖测试用例以供执行时。

于 2012-10-05T17:09:34.327 回答