试图从Maven使用Surefire启动并行TestNG测试

问题描述:

我试图从Maven使用Surefire启动并行TestNG测试,但迄今为止收效甚微。试图从Maven使用Surefire启动并行TestNG测试

我的套件有4个测试,但Maven到目前为止只是单次运行一个测试。只有一次测试结束后,下一次测试才会开始。

如果你能看看我正在使用的配置,并且让我知道你是否发现任何错误或有任何一般性建议,我将不胜感激。

这是怎么了万无一失的配置在pom.xml中: -

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.20.1</version> 
     <configuration> 
      <parallel>classes</parallel> 
      <threadCount>3</threadCount> 
      <testFailureIgnore>true</testFailureIgnore> 
      <suiteXmlFiles> 
       <suiteXmlFile>src/main/MyTestSuite.xml</suiteXmlFile> 
      </suiteXmlFiles> 
     </configuration> 
    </plugin> 

这是我的套件文件(MyTestSuite.xml): -

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 

    <suite name="My Custom suite" parallel="classes"> 
     <parameter name="driver.type" value="CHROME"/> 
     <parameter name="environment" value="DEV"/> 
     <parameter name="timeout" value="5000"/> 
     <parameter name="maxAttempts" value="20"/> 
     <parameter name="logLevel" value="INFO"/> 
     <parameter name="driver.quit" value="true"/> 
     <suite-files> 
      <suite-file path="./Test1.xml"/> 
      <suite-file path="./Test2.xml"/> 
      <suite-file path="./Test3.xml"/> 
      <suite-file path="./Test4.xml"/> 
     </suite-files> 
    </suite> 

这里是一个示例单个套件文件(Test1.xml): -

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
<suite name="Test Suite 1" parallel="classes"> 
    <test verbose="10" name="Test1" annotations="JDK"> 
     <classes> 
      <class name="com.me.test.Test1" /> 
     </classes> 
    </test> 
</suite> 

测试成功运行,但串行,不平行。任何建议将是最受欢迎的。我没有任何问题可以同时运行我的Cucumber测试,但TestNG目前还没有运气。谢谢你的阅读。

您正在使用一套套房。默认情况下,当TestNG看到一套套件时,它会按顺序运行它们,除非另有指示。

在你的情况,你可以通过如下配置你的保命插件触发并行套房执行:

首先加起来特性如下

<properties> 
    <threads>2</threads> 
    <file>src/test/resources/MyTestSuite.xml</file> 
</properties> 

,然后定义如下万无一失插件:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.20.1</version> 
    <configuration> 
     <suiteXmlFiles>${file}</suiteXmlFiles> 
     <skipTests>false</skipTests> 
     <properties> 
      <property> 
       <name>suitethreadpoolsize</name> 
       <value>${threads}</value> 
      </property> 
     </properties> 
    </configuration> 
</plugin> 

您现在可以使用以下命令运行测试mvn clean test -Dthreads=1

有关在不使用套件套件的情况下并行执行并运行套件的更多详细信息,请参阅我的博客文章here

+0

优秀的回复,以及博客上的非常好的信息。谢谢。我想我会放弃套房方式,并在您的博客中采用这种方法。我认为套房格式套件只是该项目历史组织的剩余特征。时间来重新组织它! –