我正在尝试使用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测试的解决方案。
答案 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
才能并行执行测试方法。