我正在使用Java,Selenium,Maven和TestNG执行自动化测试。我正在使用Jenkins克隆GitHub存储库并在构建开始时开始测试。目前,我已经在一个项目中针对多个应用程序进行了测试。我的testng.xml文件看起来类似于以下内容,“ appOne”是一个应用程序,“ appTwo”是另一个应用程序,都运行“生产”分组测试。
<test name="appOne">
<groups>
<run>
<include name = "production" />
</run>
</groups>
</test>
<test name="appTwo">
<groups>
<run>
<include name = "production" />
</run>
</groups>
</test>
有没有一种方法可以通过Jenkins传递这些参数,所以我可以选择在每个Jenkins构建中运行哪些应用程序。如果我要运行“测试”组中的所有测试,也可能会发生这种情况。目前,我在testng.xml文件中进行了更改,然后将更改提交到GitHub。
还是为每个应用程序创建一个单独的项目,然后使用单独的testng.xml文件为每个应用程序构建一个不同的版本会更好?
答案 0 :(得分:0)
还是为每个应用程序创建一个单独的项目,然后使用单独的testng.xml文件为每个应用程序构建一个不同的版本会更好?
如果这是两个不同的应用程序,并且没有合理的原因,则最好用詹金斯为每个应用程序分开工作。
答案 1 :(得分:0)
@ mbn217在评论中给了我答案。我从testng.xml文件中删除了所有组。然后,我将每个应用程序的testng.xml文件拆分(每个应用程序一个文件)。在我的pom.xml中,我的surefire插件看起来像这样...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>${testngTarget}</suiteXmlFile>
<suiteXmlFiles>
<groups>${groupTarget}</groups>
</configuration>
</plugin>
在Jenkins中,我添加了它是一个参数化的版本,并添加了参数的名称和默认值。效果很好。