从Jenkins参数化构建管理TestNg套件

时间:2016-01-13 08:03:46

标签: java maven jenkins testng

我在Jenkins和Maven中运行我的测试,并在几个TestNG.xml文件中使用不同的测试套件。 现在我以这种方式直接在pom中管理它们:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>${surefire.version}</version>
    <configuration>
        <suiteXmlFiles>
            <suiteXmlFile>Testing_Fuzzy_Logic.xml</suiteXmlFile>
            <suiteXmlFile>Testing_ACL.xml</suiteXmlFile>
        </suiteXmlFiles>
    </configuration>
</plugin>

但我希望能够在启动Jenkins构建时选择特定的测试套件。如果我没有选择特定的套件,我希望所有套件都包含在构建中作为默认值。所以我的问题是:

在Jenkins参数中编写所有TestNG.xml文件并将它们发送到pom文件以便Maven在运行测试时使用它们的正确方法是什么?

这样的事情:

Jenkins变量:

enter image description here

以某种方式将其设置为pom文件:

enter image description here

3 个答案:

答案 0 :(得分:0)

上述例子解决了这个问题。起初文件名出错,让我感到困惑。我修好了,现在我的例子工作正常。

所以其中一个解决方案是:一个字符串TEST_NG_XML参数,它被添加到参数化的Jenkins构建中。默认情况下,所有测试套件都设置在那里并用逗号分隔。如果需要,可以删除其中任何一个(参见上面的示例)。

但如果还有其他解决方案,我会很高兴看到它们。

答案 1 :(得分:0)

在jenkins上,您可以通过以下格式传递顶级maven目标

test -DargLine="-DTest_NG_XML=src/test/resources/testng.xml"

通过这种方式,您在运行maven测试阶段时传递Test_NG_XML变量的值。通常在jenkins上执行以下maven目标。

-DargLine="-Dparameter=value"

答案 2 :(得分:0)

  

test -DsuiteXmlFile = src / test / resources / testng1.xml,src / test / resources / testng2.xml

如何确保以这种方式传递测试套件的执行优先级?

我遇到了同样的问题,我已将它分成单独的Jenkins版本,每个版本都通过单独的套件,以确保某些套件在另一套件之前运行。 我想简化它,可能通过上面指出的方式...但你尝试执行的顺序?感谢