我们的自动化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
这看起来像是一个常见的要求,之前有人解决过这个问题吗?我的方法是否正确,有没有更好的方法呢?
请建议。
答案 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]