【发布时间】:2016-01-04 10:26:38
【问题描述】:
我正在使用 Surefire 插件在 Selenium Grid 上运行 Selenium 测试以执行测试。 就我的测试细分而言,我有几个课程,其中一些有 1 个测试,有的不止一个测试。
所以在我的 Grid 上,我有 30 个 chrome Web 驱动程序,我想在所有类中并行执行所有测试。
我已经阅读了如何使用我设置为的parallel 参数来执行此操作:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.17</version>
<configuration>
<includes>
<include>${testSuite}</include>
</includes>
<parallel>all</parallel>
<useSystemClassLoader>false</useSystemClassLoader>
<perCoreThreadCount>false</perCoreThreadCount>
<threadCount>20</threadCount>
<browser>${browser_type}</browser>
</configuration>
</plugin>
然而,这似乎并没有填满我可用的所有 Chrome 网络驱动程序。
如果我然后使用forkCount,例如:
<forkCount>20</forkCount>
<reuseForks>true</reuseForks>
然后,当测试执行第一次开始时,所有的网络驱动程序都被填满了,但是它很快就开始下降并一次只运行一个。
所以我的问题:
- forkCount和threadCount有没有关系
- 我需要做些什么才能真正实现并行运行吗?
谢谢。
【问题讨论】:
-
您是否在测试中使用@NotThreadSafe?你需要的一切都在这里maven.apache.org/surefire/maven-surefire-plugin/examples/…
-
否 - 不使用 @NotThreadSafe
-
selenium 脚本设计为并行运行?否则所有线程操作都将在单个 chrome 浏览器中发生。
-
您将需要编写一个自定义的 junit 运行器来正确地将测试分配给不同的并行线程并自己清理。它不是开箱即用的,一开始它似乎可以这样做,但线程不会被重用。
标签: java selenium junit parallel-processing surefire