java - Gradle的java插件如何并行运行JUnit测试: one queue per fork or a single queue and multiple forks?

标签 java selenium gradle queue junit4

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

当使用 maxParallelForks 选项时,有时它花费的时间比我预期的要长,因为测试似乎是事先分配给 fork 的,有时我最终会得到空闲的 fork ,而其中一个是坚持一个长测试,当它完成其他较短的测试后运行(它可以在任何其他可用的分支中运行)。

长话短说: 当并行运行测试时,Gradle 似乎分配测试就像有多个队列(每个叉一个),我希望它像一个单独的队列,叉在队列中进行下一个测试。

举个题外话的例子,我的情况就像在超市排队,旁边的都是空的,但你无法改变。

最佳答案

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

  • 测试 1 耗时 10 秒
  • Test2 花费 1s
  • Test3 耗时 10 秒
  • Test4 花费 1s

并使用 maxParallelForks = 2 总体测试任务执行时间约为 20 秒。我想我们需要讨论是否可以通过在 Test2 1 秒后返回后通知“空闲”进程将 Test3 直接分配给测试工作进程 2 来改进这一点。

关于java - Gradle的java插件如何并行运行JUnit测试: one queue per fork or a single queue and multiple forks?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33681345/

相关文章:

java - 将字符串拆分 2 次,但拆分不同 ";"和 "."

android-studio - 我在使用 com.android.tools.build :gradle:2. 2.0-alpha2 构建应用程序时不断收到此错误

gradle - Ionic-尝试构建Android项目时出错

java - 享元模式对象是不可变的?

javascript - 在 webview 中显示网页的一部分

java - 导航栏中的 wicket-bootstrap 面包屑

python - 使用 Python/Selenium 进行 Webscrape Flashscore

windows - Jenkins : Selenium GUI tests are not visible on Windows

python Selenium : Send keys is too slow

android - 使用 Dagger2、Room 和数据绑定(bind)时出错