You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maven如何单独运行单元/集成测试?配置问题求助

解决Maven仅运行集成测试的问题

问题场景

项目测试目录结构如下:

- test
  - java
      - com
         - A
            - service
                - serviceB
                   - DefaultServiceBTest.java
                   - integration
                         - DefaultServiceBIntegrationTest.java

当前使用Maven Surefire插件执行单元测试,Failsafe插件执行集成测试:

  • Surefire配置排除integration目录下的测试,执行mvn test可正常仅运行单元测试。
  • Failsafe配置包含**/integration/*.java,并绑定了integration-test和verify目标,但执行mvn verify -Pfailsafe时,会先运行单元测试再执行集成测试,不符合仅运行集成测试的需求。

原因分析

verify属于Maven的生命周期阶段,默认会依次执行之前的所有阶段,包括test阶段——而test阶段会触发Surefire插件的test目标,因此单元测试会被自动执行。

解决方案

方法1:直接调用Failsafe插件目标

不需要走完整的verify生命周期,直接执行Failsafe的两个关键目标:

mvn failsafe:integration-test failsafe:verify -Pfailsafe

这种方式跳过了test阶段,只会运行集成测试。

方法2:在Profile中配置跳过单元测试

如果必须使用mvn verify -Pfailsafe命令,需要在failsafe Profile中给Surefire插件添加跳过配置,确保test阶段不执行单元测试:

<profile>
  <id>failsafe</id>
  <build>
    <plugins>
      <!-- 跳过单元测试 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <skip>true</skip>
        </configuration>
      </plugin>
      <!-- 原Failsafe插件配置保留 -->
      <plugin>
        <artifactId>maven-failsafe-plugin</artifactId>
        <version>${maven.failsafe.plugin.version}</version>
        <configuration>
          <includes>
            <include>**/integration/*.java</include>
          </includes>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>integration-test</goal>
              <goal>verify</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</profile>

配置完成后,执行mvn verify -Pfailsafe时,Surefire会跳过单元测试,仅运行Failsafe管理的集成测试。

两种方法对比

  • 方法1操作简单,适合快速执行集成测试;
  • 方法2保留了verify生命周期的完整流程,适合需要在执行集成测试同时完成打包、质量检查等后续任务的场景。

内容的提问来源于stack exchange,提问作者Johnyb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 07:55:42