Gradle';s的java插件并行运行JUnit测试:每个fork一个队列,还是一个队列和多个fork?

Gradle';s的java插件并行运行JUnit测试:每个fork一个队列,还是一个队列和多个fork?,java,selenium,gradle,queue,junit4,Java,Selenium,Gradle,Queue,Junit4,我最近一直在尝试Gradle,我之前没有任何这方面的经验,到目前为止,我已经能够做我想做的事情,并对结果感到满意。然而,在我的例子中,我必须使用JUnit运行Selenium测试,其中一些测试比其他测试大得多(例如:25分钟vs 4分钟) 当使用maxParallelForks选项时,有时它花费的时间比我预期的要长,因为测试似乎是事先分配给forks的,有时我会使用iddle forks,而其中一个被长测试卡住,当它完成其他较短的测试后,会运行它(可能在任何其他可用的分叉中运行) TL;DR:

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

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

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


作为一个离题的例子,我的情况就像被困在超市的队列中,而你旁边的队列是空的,但你不能更改。

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

  • 测试1取10秒
  • 测试2取1秒
  • 测试3取10秒
  • 测试4取1

使用
maxParallelForks=2
整个测试任务的执行时间大约为20秒。我想我们需要讨论一下是否可以通过获得“免费”的通知来改善这一点进程在1秒后返回Test2后,将Test3直接分配给TestWorker进程2。

这解决了我的疑问,我将在并行运行测试时考虑到这一点;直接从Gradle团队成员那里获得信息非常好。另外,考虑到您在最后提到的内容,将来有这样的东西会很好版本,适用于这种情况;但这取决于您(团队)的决定。谢谢。