如何使用maven surefire插件并行执行testng测试

时间:2018-11-21 20:15:32

标签: java maven testng maven-surefire-plugin

我正在尝试使用maven surefire插件并行执行Testng测试。

请在下面找到我正在使用的配置:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.19.1</version>
    <configuration>
    <skipTests>${skipTests}</skipTests>
    <suiteXmlFiles>
        <suiteXmlFile>${suiteXmlFile}</suiteXmlFile>
    </suiteXmlFiles>
    <parallel>tests</parallel>
    <threadCount>5</threadCount>
    <systemProperties>
        <property>
            <name>testData</name>
            <value>${testData}</value>
        </property>
        <property>
            <name>testDataDelimiter</name>
            <value>${testDataDelimiter}</value>
        </property>
    </systemProperties>
    </configuration>
</plugin>

使用这种配置,我只能看到一个线程开始执行。有人可以建议我并行执行testng测试的解决方案。

1 个答案:

答案 0 :(得分:0)

  

最明显的一种是通过使用parallel参数。可能的值取决于所使用的测试提供程序。对于JUnit 4.7及更高版本,这可以是方法,类,套件,suitesAndClasses,suitesAndMethods,classesAndMethods或全部。作为JUnit测试的先决条件,JUnit运行程序应该扩展org.junit.runners.ParentRunner。如果没有通过注释@ org.junit.runner.RunWith指定运行程序,则前提条件已完成。

自maven-surefire-plugin:2.1.6起,both值已被弃用。

  

使用以下参数配置并行性的扩展。参数useUnlimitedThreads允许无限数量的线程。除非useUnlimitedThreads = true,否则可以将参数threadCount与可选参数perCoreThreadCount = true(默认为true)一起使用。参数useUnlimitedThreads和threadCount将在为并行参数指定的值的上下文中解释。

我建议将useUnlimitedThreads设置为false,而尝试使用threadCount。从大约10开始,然后逐步提高,直到找到可接受的线程计数,并且不会过多占用CPU。

我直接从TestNG Surefire文档中获取了这一点:

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>3.0.0-M1</version>
        <configuration>
          <properties>
            <property>
              <name>parallel</name>
              <value>methods</value>
            </property>
            <property>
              <name>dataproviderthreadcount</name>
              <value>30</value>
            </property>
          </properties>
        </configuration>
</plugin>

请注意,您需要将dataproviderthreadcount属性和parallel属性设置为methods才能并行执行测试方法。