如何使用Jenkins中的maven从多个套件运行特定的TestNG套件

时间:2018-03-02 18:34:59

标签: maven jenkins testng

我有一个包含3个TestNG套件和4个测试类的maven项目,我想在jenkins中运行一个特定的套件,我搜索了很多但发现只有一个命令放入目标test -DsuiteXmlFile=Jquery.xml来指定特定的套件但是当我这样做时,它也会运行所有其他套件。我被困在这里很长一段时间,请指导我完成整个过程。 而且我想知道是否有任何设置我可以这样做,如果我选择一个套件来运行,我可以运行该套件的任何特定类。 我在这里附上了我的项目结构的图像,任何输入将不胜感激。谢谢:))

project structure

Guru99.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="WebGuru99">
  <test thread-count="5" name="TestGuru99">
    <classes>
      <class name="com.selenium.vivek.Example2.WebGuru99_1"/>
      <class name="com.selenium.vivek.Example2.WebGuru99_2"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->

Jquery.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="WebJquery">
  <test thread-count="5" name="TestJquery">
    <classes>
      <class name="com.selenium.vivek.Example2.WebJquery"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->

Rediff.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="WebRediff">
  <test thread-count="5" name="TestRediff">
    <classes>
      <class name="com.selenium.vivek.Example2.WebRediff"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->

的pom.xml

<plugins>
        <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.18.1</version>
                <configuration>
                    <suiteXmlFiles>
                        <suiteXmlFile>Suites/Guru99.xml</suiteXmlFile>
                        <suiteXmlFile>Suites/Rediff.xml</suiteXmlFile>
                        <suiteXmlFile>Suites/Jquery.xml</suiteXmlFile>
                    </suiteXmlFiles>
                </configuration>
            </plugin>
        </plugins>

1 个答案:

答案 0 :(得分:5)

所以,我在这里找不到任何答案,所以继续探索可以解决这个问题的方法并找到解决方案。因此,面对这类问题的任何人都可能会受益。

在pom文件中使用<properties></properties>。添加一个标记,然后在通过maven目标运行时作为参数传递。

我在pom中添加了“suiteFile”作为标记,然后在<suiteXmlFile>中将其作为变量传递

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <suiteFile></suiteFile>
</properties>

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

然后在詹金斯,我以clean test -DsuiteFile=Suites\Jquery.xml为目标,只运行了那个套件。 希望能帮助某人:)