代码之家  ›  专栏  ›  技术社区  ›  vivkv

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

  •  6
  • vivkv  · 技术社区  · 7 年前

    我有一个maven项目,有3个TestNG套件和4个测试类,我想在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 -->
    

    重新定义。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 回复  |  直到 7 年前
        1
  •  8
  •   vivkv    7 年前

    所以,我在这里没有找到任何答案,所以继续我的旅程,探索可以做些什么来绕过这个问题,并找到一个解决方案。因此,对于任何面临这种问题的人来说,都可能从中受益。

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

    我添加了' suiteFile '作为pom中的标记,然后传入 <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 作为目标,它只运行该套件。 希望对某人有所帮助:)