Maven surefire插件fork模式

Den*_*nov 24 maven-2 fork surefire

默认情况下,maven surefile插件在隔离(分叉)环境中运行测试.您可以使用以下配置覆盖此行为:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <configuration>
        <forkMode>never</forkMode>
      </configuration>
    </plugin>
  </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

如果需要调试测试,则应使用此配置代码段.或者您可以通过以下方式简单地运行maven:

$ mvn -Dmaven.surefire.debug tests
Run Code Online (Sandbox Code Playgroud)

这将启动端口5005上的调试器.

我的问题是:分支策略有哪些好处?为什么选择maven构建的默认策略?非福祉策略是不是更直接,因此应该用作默认值(maven是约定优于配置工具,对吧)?

Pas*_*ent 16

我的问题是:分支策略有哪些好处?为什么选择maven构建的默认策略?

默认情况下,Surefire使用仅清单JAR分叉您的测试.IMO,主要优点是:

  1. 它提供了一个孤立的环境,以某种方式"正确"的类路径.
  2. 它保护maven进程本身(这是一件好事,特别是如果Maven在IDE中运行嵌入式).

非福祉策略是不是更直接,因此应该用作默认值?

直截了当的是什么?在IDE内轻松调试?我认为这不是最初的意图(如果需要,我更喜欢连接远程调试器并保持主Maven进程安全).

也可以看看

  • fork是指进程在新进程中执行任务而不是自己的进程.在万无一失的情况下,这意味着测试将在单独的进程中运行,以实现最大的性能/并发性.有时您可能想要调整它或完全关闭它(例如,在调试时). (2认同)