【问题标题】:Integration Tests on Geb / Spock + Selenium Grid do not run in parallelGeb / Spock + Selenium Grid 上的集成测试不并行运行
【发布时间】:2013-07-11 08:34:24
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: selenium-grid spock geb maven-failsafe-plugin


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      tasks.withType(Test) {
              maxParallelForks = 3 // here three forks shall open in parallel
              forkEvery = 1
              include '**/*TestName*.class'   // name of your test class
      }
      

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 你有一个例子说明如何在 Geb 中明确地做到这一点吗?我试过了,但没有用。一个通用的示例,例如可以生成 google.com 之类的网站的示例。我只需要查看实际有效的实际测试的实际语法。
        猜你喜欢
        • 2014-08-02
        • 1970-01-01
        • 1970-01-01
        • 2018-03-17
        • 1970-01-01
        • 2017-06-13
        • 1970-01-01
        • 2016-04-25
        • 1970-01-01
        相关资源
        最近更新 更多