我有以下设置:一个集成测试项目,它有一套用Groovy / Geb + Spock编写的测试,它们使用Selenium WebDriver和Selenium Grid(RemoteWebDriver)完美运行。
问题在于,无论我多少尝试调整“系统”,我都无法让测试并行运行(即虽然我有3个从站[节点]注册到集线器,但只有一个从站实际接收请求)。我已经对Selenium节点强制执行maxSession = 1,并尝试在failsafe插件配置(pom.xml文件)中使用parallel = classes | methods,threadCount和fork设置的不同组合。
我觉得问题出在maven配置和selenium网格之间,可能与Geb / Spock配置有关。
你们中有没有人对这个问题有任何见解?
PS:有人建议使用Geb / Spock并行运行测试是不可能的 - 因为某些原因?Geb?锁定JUnitRunner(不确定这意味着什么)。
你可以肯定地运行它,关键是你必须把它们(你的睾丸)放在threads.Here中。
有一些测试框架,例如TestNG,它支持开箱即用的方法级别的并行测试。相反,Spock不支持它。
但是,您不必通过测试框架实现多线程来实现此功能。 您可以使用构建工具并行运行测试类,Maven和Gradle都支持此类。
如果您使用的是Maven,这个文档页面和示例可能对您有所帮助:https://maven.apache.org/surefire/maven-surefire-plugin/examples/fork-options-and-parallel-execution.html具体来看看“分叉测试执行”。
将以下配置添加到build.gradle文件中:
tasks.withType(Test) {
maxParallelForks = 3 // here three forks shall open in parallel
forkEvery = 1
include '**/*TestName*.class' // name of your test class
}