1

我有以下设置:一个集成测试项目,它有一套用 Groovy/Geb + Spock 编写的测试,它们使用 Selenium WebDriver 和 Selenium Grid (RemoteWebDriver) 都可以完美运行。

问题是,无论我如何尝试调整“系统”,我都无法让测试并行运行(即,虽然我有 3 个从属 [节点] 注册到集线器,但实际上只有一个从属接收请求)。我对 Selenium 节点强制执行了 maxSession=1,并在故障安全插件配置(pom.xml 文件)中尝试了 parallel=classes|methods、threadCount 和 fork 设置的不同组合。

我觉得问题出在 maven 配置和 selenium 网格之间,可能与 Geb/Spock 配置有关。

你们中有人对这个问题有任何见解吗?

PS:有人建议使用 Geb / Spock 并行运行测试是不可能的 - 因为出于某种原因?Geb?锁定 JUnitRunner(不确定这意味着什么)。

4

3 回答 3

1

有一些测试框架,例如 TestNG,支持开箱即用的方法级别的并行测试。作为相反的例子,Spock 不支持它。

但是你不必让你的测试框架实现多线程来完成这项工作。
您可以使用构建工具并行运行测试类,Maven 和 Gradle 都支持这一点。

如果您使用 Maven,此文档页面和示例可能会对您有所帮助: https ://maven.apache.org/surefire/maven-surefire-plugin/examples/fork-options-and-parallel-execution.html 具体看看在“分叉测试执行”。

于 2019-02-25T23:45:53.903 回答
1

将以下配置添加到您的 build.gradle 文件中:

tasks.withType(Test) {
        maxParallelForks = 3 // here three forks shall open in parallel
        forkEvery = 1
        include '**/*TestName*.class'   // name of your test class
}
于 2019-05-08T06:33:53.953 回答
0

您可以肯定地运行它,关键是您必须将它们(您的睾丸)放入线程中。是链接。

于 2013-07-17T09:01:22.613 回答