按参数选择硒测试

时间:2018-09-11 07:55:44

标签: maven selenium jenkins junit parameters

我们使用Selenium Webdriver构建了一些测试。使用JUnit批注,我们手动选择应运行哪些测试(@ Test,@ Ignore)。

类似这样的东西:

import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test; 
import ...

@RunWith(JUnit4.class)
public class MainclassTest {

  @Test
  @Ignore
  public void Test01() {
    ...
  }

  @Test
  // @Ignore
  public void Test02() {
    ...
  }

}

以上我们只想运行Test02。

但是现在我们想运行Jenkins的测试,并通过参数选择一个或多个测试,而不是注释掉@Ignore。在Jenkins中,我们仅使用-Dxxxx提供POM文件和一些参数。

在不同的詹金斯工作中运行不同的测试组合的良好实践是什么?最好将测试分为不同的类?还是可以在Maven Pom文件中更好地配置所需的测试?

1 个答案:

答案 0 :(得分:2)

您可以使用JUnit categories

作为优先级的简单示例,声明接口并扩展这样的层次结构:

/** Marker for test case priority. * /
package priority;
public interface Low {
}
public interface Medium extends Low {
}
public interface High extends Medium {
}

然后根据需要注释您的方法,例如:

public class MainclassTest {
  @Test
  @Category(priority.High.class)
  public void Test01() {
    ...
  }
  @Test
  @Category(priority.Low.class)
  public void Test02() {
    ...
  }
}

最后使您的POM可配置

<build>
  <plugins>
    <plugin>
      <artifactId>maven-surefire-plugin</artifactId>
      <configuration>
        <groups>${testcase.priority}</groups>
      </configuration>
    </plugin>
  </plugins>
</build>

,让詹金斯根据需要使用参数运行它:

mvn test -Dtestcase.priority=priority.High

(请注意,由于接口的扩展,“低”将运行所有类别。如果您不希望这样做,只需删除扩展名即可。)