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

如何通过Maven仅执行Spring Boot中的集成测试?

解决Maven单元测试与集成测试分离执行的问题

这个问题我之前也碰到过,核心原因是Maven的生命周期执行顺序和测试插件的默认行为导致的——默认情况下执行integration-test或verify阶段时,会先跑完前面的test阶段(单元测试),再执行集成测试,所以两个测试类都会被运行。咱们可以通过配置maven-surefire-plugin(单元测试插件)和maven-failsafe-plugin(集成测试插件)来精准控制测试范围,同时按需选择执行命令。

第一步:配置测试插件

在你的pom.xml中添加以下插件配置,明确区分单元测试和集成测试的类规则:

<build>
    <plugins>
        <!-- 配置单元测试插件:仅运行以Test结尾的类,排除IT结尾的集成测试类 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>3.2.5</version>
            <configuration>
                <includes>
                    <include>**/*Test.java</include>
                </includes>
                <excludes>
                    <exclude>**/*IT.java</exclude>
                </excludes>
            </configuration>
        </plugin>

        <!-- 配置集成测试插件:仅运行以IT结尾的类 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>3.2.5</version>
            <executions>
                <execution>
                    <id>run-integration-tests</id>
                    <goals>
                        <goal>integration-test</goal>
                        <goal>verify</goal>
                    </goals>
                    <configuration>
                        <includes>
                            <include>**/*IT.java</include>
                        </includes>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

第二步:按需执行测试命令

配置完成后,就可以根据需求选择对应的命令:

  • 仅运行单元测试:执行 mvn test,此时只会运行StudentFastControllerTest
  • 仅运行集成测试:执行 mvn integration-test -DskipTests,通过-DskipTests参数跳过test阶段的单元测试,只执行StudentControllerIT
  • 全流程验证(单元+集成测试):执行 mvn verify,会先跑单元测试,再跑集成测试

补充说明

为什么原来执行mvn integration-test会跑两个测试?因为Maven的生命周期是按顺序执行的:test阶段在integration-test阶段之前,所以执行integration-test时会自动触发前面所有阶段的任务,包括test阶段的单元测试。通过-DskipTests参数可以临时跳过单元测试阶段,只专注于集成测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:51:10