Gradle的Java插件如何并行运行JUnit测试:每个分叉一个队列或单个队列和多个分叉?



我最近一直在尝试Gradle,之前没有任何经验,到目前为止,我已经能够做我想做的事情,并对结果感到满意。然而,在我的情况下,我必须用JUnit运行Selenium测试,其中一些测试比其他测试大得不成比例(即:25分钟vs 4分钟)。

当使用maxParallelForks选项时,有时它所花费的时间比我预期的要长,因为测试似乎是预先分配给fork的,有时我会使用iddle fork,而其中一个被长测试卡住,当它完成其他较短的测试时,会在它之后运行(它可能在任何其他可用的fork中运行)。

TL;DR:当并行运行测试时,Gradle似乎将测试分配为多个队列(每个fork一个),我希望它像一个单独的队列,fork在其中进行队列中的下一个测试。

举个离题的例子,我的处境就像在超市排队一样,你旁边的人都是空的,但你无法改变

是后者。gradle使用一个队列,并将每个条目顺时针分配给正在运行的进程。假设你有4个测试:

  • 测试1耗时10秒
  • 测试2耗时1s
  • 测试3耗时10秒
  • 测试4耗时1s

并且使用CCD_ 2,整个测试任务执行将在20s左右。我想我们需要讨论一下,在1秒后Test2返回后,是否可以通过收到关于"免费"进程的通知,将Test3直接分配给测试工作进程2来改进这一点。

截至2021年7月,您的问题(以及我的经验)与本期中描述的问题相匹配"由于不活动而自动关闭";。

这个问题没有得到解决,是的,系统会提前分配任务,并且不会重新平衡以使用空闲的工人。

最新更新