selenium - Geb、Spock、Gradle 和 maxParallelForks

标签 selenium gradle automated-tests spock geb

我在理解 Geb/Spock 测试中遇到的问题时遇到了一些困难。我们正在使用 gradle,并尝试并行运行我们的测试。据我了解,gradle 中的 maxParallelForks 属性将在单独的 JVM 中运行测试

我遇到的问题是,当我有 6 个测试类并将 maxParallelForks 设置为 4 时,当测试开始时,我将得到 4 个测试类并行运行。惊人的!但最后两个类就是问题所在。假设在前 4 节课中,其中 2 节课在 1 分钟内完成,其中 2 节课在 5 分钟内完成。我看到的是,它似乎要等到最后两个长时间运行的类(class)完成后再旋转其他 fork ,而不是前两个类(class)完成并开始接下来的两个类(class)。这远不太理想。

我是否误解了什么,或者我是否在某处遗漏了某个属性?这是我的 build.gradle 中的内容:

tasks.withType(Test) {
   systemProperties System.properties
   maxParallelForks = 4
   forkEvery = 1 
}

最佳答案

类被分配给分支以便预先执行,而不是基于轮询。因此,前两个分支将预先分配两个类别,而另外两个类别则各分配一个,无论每个类别需要多长时间才能完成。在最坏的情况下,两个运行时间最长的类将被分配给单个 fork 。这就是它的工作原理 - 类被分成组,然后使用要为每个组执行的类列表来启动单独的测试 jvm( fork )。

顺便说一句 - 您不想执行 forkEvery = 1 - 这会在每个测试类之后重新启动您的测试 jvm,从而减慢您的测试执行速度,但没有任何好处。

关于selenium - Geb、Spock、Gradle 和 maxParallelForks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54639237/

相关文章:

java - Selenium 自动元素点击返回 null

java - 无法从selenium java中的ui li元素中进行选择

android - Android Studio无法呈现预览

android - Gradle Android 单元测试依赖于 'aar' 构建工具 0.11.+

c++ - NetBeans 生成的 Makefile 忽略测试返回码

java - 我可以验证输入字段是否被屏蔽或显示文本吗?

html - Selenium:嵌入到 Object 标签中的 SVG 元素未被 Selenium IDE 或 xPath 识别?

java - 在 Gradle 中,有没有办法将 JDK 设置为 Eclipse Default?

javascript - 我无法在 Mac 上打开 Cypress : Cypress not found

automated-tests - 如何使用 UFT 12/ALM 12 获取测试集路径?