Java Maven在集成测试阶段运行码头

Java Maven在集成测试阶段运行码头,java,maven,jetty,integration-testing,maven-failsafe-plugin,Java,Maven,Jetty,Integration Testing,Maven Failsafe Plugin,我使用故障保护插件 因此,当我键入mvn failsafe:integration test时,它会启动我的集成测试(这很好) 但我希望我的jetty服务器从预集成阶段开始。我该怎么办? (我不想启动mvn验证,因为它涉及整个周期的运行,但是mvn故障保护:集成测试——似乎应该这样做) 有两个插件: org.apache.maven.plugins maven故障保护插件 2.16 集成测试 集成测试 验证 验证 org.eclipse.jetty jetty maven插件 ${jetty.

我使用
故障保护
插件

因此,当我键入
mvn failsafe:integration test
时,它会启动我的集成测试(这很好)

但我希望我的
jetty服务器
预集成
阶段开始。我该怎么办?

(我不想启动
mvn验证
,因为它涉及整个周期的运行,但是
mvn故障保护:集成测试
——似乎应该这样做)

有两个插件:


org.apache.maven.plugins
maven故障保护插件
2.16
集成测试
集成测试
验证
验证
org.eclipse.jetty
jetty maven插件
${jetty.version}
停止
9999
5.
5.
${project.basedir}/src/main
${project.basedir}/src/test
${project.basedir}/src/test/resources/jetty-context.xml
/${project.artifactId}-${project.version}
起动码头
预集成测试
跑爆
0
真的
停靠码头
整合后测试
停止

这是jetty和maven故障保护插件使用手册:

它提供了一个示例配置,用于将Jetty集成到集成测试生命周期中

Jetty在集成前测试阶段启动,在集成后测试阶段停止

<plugin>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>maven-jetty-plugin</artifactId>
    <version>6.1.16</version>
    <executions>
      <execution>
        <id>start-jetty</id>
        <phase>pre-integration-test</phase>
        <goals>
          <goal>run</goal>
        </goals>
        <configuration>
          <scanIntervalSeconds>0</scanIntervalSeconds>
          <daemon>true</daemon>
        </configuration>
      </execution>
      <execution>
        <id>stop-jetty</id>
        <phase>post-integration-test</phase>
        <goals>
          <goal>stop</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

org.mortbay.jetty
maven jetty插件
6.1.16
起动码头
预集成测试
跑
0
真的
停靠码头
整合后测试
停止
但是,它还特别建议您使用
验证
阶段:

建议您不要直接调用 集成前测试、集成测试或集成后测试阶段 而是通过指定验证来运行集成测试 阶段。[……]

这允许您设置集成测试 环境在预集成测试阶段,运行 集成测试在集成测试阶段,干净地拆卸 集成后测试期间的集成测试环境 最后检查集成测试结果和失败之前的阶段 如有必要,请进行构建


我更喜欢在测试用例中以编程方式动态启动jetty。主要原因是:

  • 测试变得独立,不依赖于maven配置
  • 可以在任何IDE中按原样运行测试

但有了maven,集成和单元测试变得孤立/不可靠。这有利于持续集成,例如,您可以先启动单元测试,然后再启动集成测试。关于与IDE集成的观点很有道理。我总是在不同的源代码树(或包)中分离单元测试和集成测试,因此它们也很容易从IDE中分离出来。(在目录中运行所有测试…)我用这个建议作为答案。以编程方式/直接从集成/单元测试运行jetty server。对于单元测试,您不应该启动jetty-对吗?;-)这很有效-我使用来运行
验证
阶段中的集成测试,实现了类似的设置。仅供参考:如果您只键入
集成测试
短语,则无法进行集成后测试。