当前位置: 首页 > 知识库问答 >
问题:

Geb、Spock、Gradle和maxParallelForks

魏雅惠
2023-03-14

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

我遇到的问题是,当我有6个测试类并将maxParallelForks设置为4个时,当测试开始时,我将得到4个测试类并行运行。太棒了!但最后两个班才是问题所在。假设在前4节课中,2节课在1分钟内完成,2节课在5分钟内完成。我看到的不是前两个完成并开始下两个类,而是等到最后两个长时间运行的类完成后再旋转其他叉。这不太理想。

我是误解了什么还是错过了什么财产?这就是我的建筑。格雷德尔:

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

共有1个答案

燕永昌
2023-03-14

类被分配给fork,以便预先执行,而不是在轮询的基础上执行。因此,前两个分叉将得到预先分配的两个类,而另外两个分叉各一个,而不管这些类需要多长时间才能完成。在最坏的情况下,两个运行时间最长的类将被分配给单个分叉。这就是它的工作原理--将类拆分为组,然后将单独的测试JVM(分叉)与要为每个分叉执行的类列表分开。

另一方面,您不想执行forkevery=1,这将在每个测试类降低测试执行速度后重新启动测试JVM,而没有任何好处。

 类似资料:
  • 我受到了某种测试污染。当我单独运行失败测试时,它们会通过。当我把它们一起运行时,我会得到错误。这些错误与数据库无关。我不能理解错误。例如:页面: 我不明白,因为模块的内容不是必需的。另外,另一个测试的污染会导致这种情况吗?我的测试太多了,无法列出。 我唯一的想法是cookie被设置而不是由我的程序。有一堆cookie,它们具有奇怪的名称,如“ba743b”、“kvcd”、“kn_ai”等,并具有神

  • 我正在尝试使用Spock运行geb测试。我已经在groovy脚本中编写了所有内容,该脚本位于中,如下所示

  • 免责声明:在我来这里问这个问题之前,我已经通过了这么多不同的来源。我用maven引用了geb的GitHub项目、geb的book和许多YouTube教程,等等。 我只是试图让一个项目启动和运行,做一个非常简单的自动化搜索引擎测试,只是为了让我可以玩工具。 这是我在测试中得到的例外。我运行了一个非常简单的assert Hello World测试,该测试已经通过,为了清晰起见,我删除了该测试: gro

  • 我正在用Geb(0.12.2)和Spock定义一些规范来测试我的前端。我的应用程序的登录系统依赖于我们内部IDP的SSO。一旦我进入我的应用程序的私人部分,如果以前没有在我们的IDP中登录,它将重定向到IDP主页,然后登录并重定向到您最初询问的私人URL。 注销。 删除IDP设置的cookie。 我希望初始化每一个GebSpec类,而不需要任何以前的cookie或以前GebSpec执行中的状态,并

  • 我试过下面的东西,但不起作用。 我可以使用gradle maxParallelForks属性在类(spec)级别执行测试,但我希望在测试级别并行运行。

  • 当我尝试使用以下方法创建功能测试时: 我得到了这个错误,因为Spock试图使用错误的Groovy版本: 编译GenerateAsyncController.Groovy时出错:启动失败:无法实例化在jar中指定的全局转换类org.spockframework.compiler.spockTransform:file://users/reinaldoluckman/.gradle/caches/mo