如何指定要在Jenkins版本中运行的TestNG测试?

时间:2019-02-07 13:34:27

标签: java selenium jenkins testng

我正在使用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文件为每个应用程序构建一个不同的版本会更好?

2 个答案:

答案 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中,我添加了它是一个参数化的版本,并添加了参数的名称和默认值。效果很好。