Maven:如何为testng设置线程数

Maven: how to set thread count for testng

我正在使用 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 文件中添加线程数吗??

  1. 您可能需要从 XML 文件中的套件定义中删除 thread-count,因为它将覆盖 Maven Surefire 传递给 TestNG 的任何 -threadcount 参数(参见 Running TestNG).
  2. 下的命令行参数
  3. 从本地测试看来 threadCount and suiteXmlFiles 不兼容,suiteXmlFiles 的 Maven Surefire 插件文档指出:

    Note that suiteXmlFiles is incompatible with several other parameters of this plugin, like includes/excludes.

    我认为 threadCount 是另一个不兼容的 "other parameters"。

    TestNG XML 文件中可用的一些相同选项在配置 Maven Surefire 插件时也可用,因此看起来您必须 "port" 您的 TestNG XML 到 Maven Surefire 插件配置 XML.

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

我没有尝试这样做,但是这个配置应该可以。 我不确定,但要使用它,您应该使用 2.19+ 版本的 surefire 插件。我还建议在使用 TestNG 时不要在部分中使用 surefire-specific 元素名称(如 等)。更好的选择是使用具有一组 <属性> 值的 部分。这些值将传递给 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>