【问题标题】:What is the equivalent of reuseForks=false in Bazel?Bazel中reuseForks=false的等价物是什么?
【发布时间】:2022-07-10 22:38:03
【问题描述】:

我想在 Bazel 中设置 reuseForks=false,这样我的测试就不会重用同一个 JVM 进程。我怎样才能在 Bazel 中做到这一点?

根据https://maven.apache.org/surefire/maven-surefire-plugin/examples/fork-options-and-parallel-execution.html

参数reuseForks用于定义是否在一个测试类之后终止衍生进程并为下一个测试创建一个新进程(reuseForks=false),或者是否重用这些进程来执行下一个测试(重用Forks=true)。

默认设置为 forkCount=1/reuseForks=true,这意味着 maven-surefire-plugin 创建一个新的 JVM 进程来执行一个 Maven 模块中的所有测试。

forkCount=1/reuseForks=false 在自己的 JVM 进程中一个接一个地执行每个测试类。它为测试执行创建了最高级别的分离,但它可能也会为您提供所有可用选项中最长的执行时间。将其视为最后的手段。

【问题讨论】:

    标签: java maven bazel


    【解决方案1】:

    默认情况下,Bazel 不会重复使用相同的 JVM 进程进行测试,该功能隐藏在实验标志后面。

    来自Bazel docs

    --[no]experimental_persistent_test_runner default: "false"

    允许在持久工作线程中本地运行 java_test 目标。要启用持久测试运行器,必须使用以下标志运行 bazel 测试:--test_strategy=local --strategy=TestRunner=worker --experimental_persistent_test_runner

    【讨论】:

    • 是不是每个测试默认在单独的JVM进程中执行?会消耗大量资源,所以看起来不太对……
    • 实际操作起来相对简单。只需在一个终端运行bazel test,然后在另一个终端运行htop。您应该会看到多个进程独立运行。
    【解决方案2】:

    这似乎是不可能的 ATM。 https://bazel.build/reference/command-line-reference 不再提及 experimental_persistent_test_runner 并且这个 github 问题 (https://github.com/bazelbuild/bazel/issues/7595) 仍然开放。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-13
      • 2013-10-14
      • 1970-01-01
      • 1970-01-01
      • 2014-05-08
      • 1970-01-01
      • 2014-06-12
      相关资源
      最近更新 更多