几天以后,我试着看看我的配置错误在哪里与我的Selenium测试并行运行。
我有一个有2个节点的Selenium Grid。 在我的pom.xml中,我已设置surefire以2比2运行我的测试方法,使用特定类别然后进行其他测试。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<executions>
<execution>
<id>default-test</id>
<goals>
<goal>test</goal>
</goals>
<configuration>
<parallel>methods</parallel>
<perCoreThreadCount>false</perCoreThreadCount>
<threadCount>2</threadCount>
<reuseForks>false</reuseForks>
<groups>
com.something.categories.Safe,
com.something.categories.Parallel
</groups>
</configuration>
</execution>
<execution>
<id>no-safe</id>
<goals>
<goal>test</goal>
</goals>
<configuration>
<excludedGroups>
com.something.categories.Safe,
com.something.Parallel
</excludedGroups>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
当我启动测试 mvn clean test -Dtest =&#39; TestAwesome&#39; TestAwesome中包含的所有测试都在同一时间启动(我看到打开了2个以上的浏览器) ,所以不尊重我的threadCount值。
我错过了什么?
回答后的版本 这里是我的部分pom.xml来解决我的问题
<profiles>
<profile>
<id>selenium-tests</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<parallel>all</parallel>
<threadCount>${threads}</threadCount>
<perCoreThreadCount>false</perCoreThreadCount>
<useUnlimitedThreads>true</useUnlimitedThreads>
<systemProperties>
<browser>${browser}</browser>
<screenshotDirectory>${project.build.directory}/screenshots</screenshotDirectory>
<gridURL>${seleniumGridURL}</gridURL>
<env>${env}</env>
</systemProperties>
<groups>${groups}</groups>
<excludedGroups>${excludedGroups}</excludedGroups>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
答案 0 :(得分:1)
由于您使用的是现代版本的surefire,您可能想尝试 threadCountMethods 参数而不是threadCount与 useUnlimitedThreads = true一起使用,即使看起来似乎反直觉。
从Surefire 2.7开始,使用并行的全套选项不需要额外的依赖关系。从Surefire 2.16开始,引入了新的线程计数属性,即threadCountSuites,threadCountClasses和 threadCountMethods 。
Fork options and parallel execution:
作为一个具有无限数量线程的示例,最多有三个并发线程来执行套件:parallel = all,useUnlimitedThreads = true,threadCountSuites = 3.