0

我们的自动化 QA 测试用例由 Jenkins 安排和执行。我必须在不同的环境中运行测试用例,比如UATSTAGEPROD(因为它们有不同的测试数据),并且这些测试用例被“分组”为SANITYREGRESSIONBATS。我正在使用 maven + testNG(surefire 插件)来构建和执行它。

现在我需要将其作为 Jenkins 中的作业运行为“STAGE 中的 BATS”或说“DEV 中的回归”等。为此,我认为最好的方法是,在 Jenkins 作业中,调用类似 ..

mvn test -Denv=STAGE -Dgroup=SANITY

其他选项是在 Jenkins 的系统变量中设置参数(环境和组)并从那里开始。

但我面临着一些主要障碍,正如这里的另一篇文章中提出的那样..

如何从maven传递java代码一个参数进行测试

这看起来像一个常见的要求,以前有没有人解决过这个问题?我的方法是否正确,还有更好的方法吗?

请建议。

4

2 回答 2

1

您可以为每个测试场景/环境创建单独的 Maven 构建配置文件,然后根据 Jenkins 中设置的命令行参数或环境变量设置它们的激活。

编辑:

您基本上将拥有每个测试场景的配置文件,然后您将使用 surefire-plugin 的包含/排除配置来控制哪些测试被触发。理想情况下,您可以通过顶级测试类运行所有这些,因此您所称的每组“组”都将具有某种触发底层测试套件的 AllTests.java 类。

   <profile>
    <id>Stage</id>
    <activation>
      <activeByDefault>false</activeByDefault>
    </activation>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.12.4</version>
            <configuration>
              <includes>
            <include>**/Sanity/AllTests.java</include>
              </includes>
            </configuration>
          </plugin>
        </plugins>
  </profile>
于 2012-11-07T01:21:42.730 回答
0

假设您正在使用 Build 部分运行“mvn test”,这对我有用。我去了提到的同一个帖子OP,但发现了这种更简单的方法。

(Jenkins 为作业配置页面)

Build
Invoke Maven 3
  Maven Version [<latest version>]
  Root POM      [pom.xml]
  Goals and options [test -Denv=STAGE -Dgroup=SANITY]

您还可以参数化构建并将参数用于以下选项。

Goals and options [test -Denv=$PARAM_ENV -Dgroup=$PARAM_GROUP]
于 2016-01-28T17:33:45.563 回答