Maven surefire插件fork模式

时间:2010-07-06 11:41:39

标签: maven-2 surefire fork

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

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <configuration>
        <forkMode>never</forkMode>
      </configuration>
    </plugin>
  </plugins>
</build>

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

$ mvn -Dmaven.surefire.debug tests

这将在端口5005上启动调试器。

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

2 个答案:

答案 0 :(得分:16)

  

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

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

  1. 它提供了一个具有某种“正确”类路径的隔离环境。
  2. 它保护maven进程本身(这是一件好事,尤其是如果Maven在IDE中运行嵌入式)。
  3.   

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

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

    另见

答案 1 :(得分:1)

分叉模式有助于加载系统类路径,如果它设置为“true”或“once”。 但是,如果使用maven-surefire 2.5插件,有时设置fork mode = true会出现错误,如“命令行太长”或“有测试失败”。为了避免这个错误,建议使用suferire插件2.5

来设置