从jenkins传递java参数->;maven->;testng
我们的自动化QA测试用例由Jenkins安排和执行。我必须在不同的环境下运行测试用例,比如UAT、STAGE和PROD(因为它们有不同的测试数据),这些测试用例被“分组”为健全性、回归和BATS。 我正在使用maven+testNG(surefire插件)来构建和执行它 现在,我需要在Jenkins中以“舞台上的蝙蝠”或“开发中的回归”等方式运行此任务。 对于这一点,我认为最好的方法是,在詹金斯·乔布斯的《confis》中,称之为从jenkins传递java参数->;maven->;testng,maven,jenkins,parameter-passing,testng,maven-surefire-plugin,Maven,Jenkins,Parameter Passing,Testng,Maven Surefire Plugin,我们的自动化QA测试用例由Jenkins安排和执行。我必须在不同的环境下运行测试用例,比如UAT、STAGE和PROD(因为它们有不同的测试数据),这些测试用例被“分组”为健全性、回归和BATS。 我正在使用maven+testNG(surefire插件)来构建和执行它 现在,我需要在Jenkins中以“舞台上的蝙蝠”或“开发中的回归”等方式运行此任务。 对于这一点,我认为最好的方法是,在詹金斯·乔布斯的《confis》中,称之为 mvn test -Denv=STAGE -Dgroup=SAN
mvn test -Denv=STAGE -Dgroup=SANITY
另一个选项是在Jenkins的系统变量中设置参数(env和group)并从那里开始
但我面临着一些主要障碍,正如在这里的另一篇文章中提出的那样
这似乎是一个常见的要求,以前有人提出过吗?我的方法正确吗?还有更好的方法吗
请建议。您可以为每个测试场景/环境创建单独的maven构建概要文件,然后根据Jenkins中设置的命令行参数或环境变量设置它们的激活 编辑: 基本上,每个测试场景都有一个概要文件,然后使用surefire插件的包含/排除配置来控制触发哪些测试。理想情况下,您可以通过一个顶级测试类来运行所有这些,这样您调用的每一组“组”都将具有某种触发底层测试套件的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>
阶段
假的
org.apache.maven.plugins
maven surefire插件
2.12.4
**/Sanity/AllTests.java
假设您使用构建部分来运行“mvn测试”,下面是对我有效的方法。我去了上面提到的同一个帖子,但发现这个方法更简单
(Jenkins为作业配置页面)
谢谢你的回复,这是不是一个过度杀戮,有没有任何简化的方法,你可以建议请。这似乎是一个常见的要求。我不认为这是过分的。您必须有一种方法来告诉插件要运行/排除哪些测试,并且这种方法是通过configuration元素来实现的。因此,在maven中,如果你想在不同的场景中使用相同的POM创建不同的行为,你可以创建不同的配置文件。@Girish-让我知道它是如何进行的,如果有帮助,不要忘记向上投票并接受。感谢你的帮助,看起来不是为每个测试场景创建配置文件,而是可以以更简单的方式实现,你怎么认为?
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]