Maven:如何设置testng的线程数

时间:2015-12-23 08:57:03

标签: multithreading maven testng maven-surefire-plugin

我正在使用testng并行运行测试。 Xml文件包含线程计数参数。

<suite name="Lalala" parallel="tests" thread-count="3" preserve-order="true">

但我想从POM文件中设置线程计数值。我试过了

    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>6.3.1</version>
    </dependency>

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.19</version>
        <configuration>
            <parallel>classes</parallel>
            <threadCount>10</threadCount>
            <suiteXmlFiles>
                <suiteXmlFile>src/test/resources/${suite}.xml</suiteXmlFile>
            </suiteXmlFiles>
            <workingDirectory>target/</workingDirectory>
        </configuration>
    </plugin>

但是线程数仍然等于1

有没有办法从Pom文件中添加线程数?

2 个答案:

答案 0 :(得分:1)

  1. 您可能需要从XML文件中的套件定义中删除thread-count,因为它将覆盖Maven Surefire传递给TestNG的任何-threadcount参数(请参阅命令行参数 Running TestNG)下。
  2. 从本地测试看,threadCountsuiteXmlFiles似乎不兼容,而suiteXmlFiles的Maven Surefire插件文档中显示的是:

      

    请注意,suiteXmlFiles与此插件的其他几个参数不兼容,例如includes/excludes

    我认为threadCount是另一个不兼容的&#34;其他参数&#34;。

    在配置Maven Surefire插件时,TestNG XML文件中提供的一些相同选项也可用,因此看起来您将需要&#34; port&#34;您的TestNG XML到Maven Surefire插件配置XML。

    在我的本地测试中,我发现我可以简单地省略suiteXmlFiles并找到插件并使用指定的threadCount运行我的测试。根据您的TestNG XML,您的解决方案可能需要更多的工作。

答案 1 :(得分:0)

我不尝试这样做,但这种配置应该有效。 我不确定,但要使用它,你应该使用版本2.19+的surefire插件。另外,我建议您在使用TestNG时不要在部分中使用surefire特定的元素名称(例如&lt; parallel&gt;,&lt; threadCount&gt;,&lt; groups&gt;等)。更好的选择是使用&lt; properties&gt;带有&lt; property&gt;的部分值。这些值将传递给testNG命令行。 TestNG documentation

中明确描述了此类属性的行为
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.19</version>
    <dependencies>
        <dependency>
            <groupId>org.apache.maven.surefire</groupId>
            <artifactId>surefire-testng</artifactId>
            <version>2.19</version>
        </dependency>
    </dependencies>

    <configuration>
        <suiteXmlFiles>
            <suiteXmlFile>suites/my-suite.xml</suiteXmlFile>
        </suiteXmlFiles>

    <!-- DONT USE THIS
    <parallel>methods</parallel>
    <threadCount>5</threadCount>
    -->

    <properties>
       <property>   
            <name>parallel</name>     
            <value>methods</value>  
        </property>
        <property>   
            <name>threadcount</name>
            <value>5</value>        
        </property>
        <property>
            <name>dataproviderthreadcount</name>   
            <value>3</value>
        </property>
    </properties>
</plugin>