【问题标题】:pass a java parameter from jenkins -> maven -> testng从 jenkins -> maven -> testng 传递一个 java 参数
【发布时间】:2012-11-06 23:31:49
【问题描述】:

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

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

mvn test -Denv=STAGE -Dgroup=SANITY

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

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

How to pass java code a parameter from maven for testing

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

请提出建议。

【问题讨论】:

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


    【解决方案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>
    

    【讨论】:

    • 感谢您的回复,这不是过度杀戮,您是否可以建议任何简化的方法。这看起来是一个常见的要求。
    • 我不认为这是矫枉过正。您必须有一种方法来告诉插件要运行/排除哪些测试,而这样做的方法是通过配置元素。因此,在 Maven 中,如果您希望使用相同的 POM 在不同的场景中出现不同的行为,您可以创建不同的配置文件。
    • @Girish - 告诉我进展如何,如果有帮助,别忘了点赞并接受。
    • 感谢您的帮助,看起来不是为每个测试场景创建配置文件,而是可以通过更简单的方式实现stackoverflow.com/questions/13245411/…,您怎么看?
    【解决方案2】:

    假设您使用 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]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-20
      • 1970-01-01
      • 1970-01-01
      • 2017-08-20
      • 2012-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多