从jenkins传递java参数 - > maven - > TestNG的

时间:2012-11-06 23:31:49

标签: maven jenkins parameter-passing testng maven-surefire-plugin

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

现在我需要将这个作为Jenkins的工作作为“STAGE中的BATS”或者说“DEV中的REGRESSION”等。 对于这一点,我认为最好的方法是,在詹金斯工作的混乱中,称之为......

mvn test -Denv=STAGE -Dgroup=SANITY

其他选项是在Jenkins的系统变量中设置params(env和group)并从那里开始。

但是我面临着一些不同帖子中出现的主要障碍......

How to pass java code a parameter from maven for testing

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

请建议。

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分: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]