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

为什么我的Spring Boot项目中的测试类无法被Maven识别并执行?

问题原因分析
  • 测试类命名与Maven默认测试执行规则不匹配
    Maven默认负责单元测试的maven-surefire-plugin(绑定到test构建阶段)仅扫描符合以下命名规则的测试类:
    • 类名以Test开头
    • 类名以Test/Tests/TestCase结尾
      你当前的测试类命名为SampleIT,属于集成测试的默认命名规范,默认由maven-failsafe-plugin负责执行,该插件默认绑定到verify构建阶段,你执行mvn test/mvn install时不会触发该类的扫描执行。
  • 缺少集成测试插件配置
    你当前的pom文件中仅配置了spring-boot-maven-plugin,没有引入maven-failsafe-plugin,即使执行mvn verify也不会自动识别IT结尾的集成测试类。
  • 存在代码与配置语法错误
    1. 测试类中注解拼写错误:@Autowried应为@Autowired
    2. 若@Test注解导入的是Junit5的org.junit.jupiter.api.Test,与你使用的Junit4运行器SpringJunit4ClassRunner不兼容,也会导致测试不被识别
    3. 你贴出的pom文件中所有dependency标签都缺少闭合标签</dependency>,会导致依赖加载异常,也可能影响测试扫描
解决方案
  • 方案1:作为单元测试直接执行
    将测试类名修改为SampleTest,符合maven-surefire-plugin的默认命名规则,执行mvn test即可正常执行该测试。
  • 方案2:保留IT后缀作为集成测试
    在pom文件的build->plugins节点下添加maven-failsafe-plugin配置:
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-failsafe-plugin</artifactId>
      <version>2.22.2</version>
      <executions>
        <execution>
          <goals>
            <goal>integration-test</goal>
            <goal>verify</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
    
    之后执行mvn verify即可触发所有IT结尾的集成测试执行。
  • 方案3:修改Surefire扫描规则
    如果你不想改类名也不想拆分单元/集成测试阶段,可以手动配置maven-surefire-plugin的扫描规则,将*IT类纳入扫描范围:
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>2.22.2</version>
      <configuration>
        <includes>
          <include>**/*Test.java</include>
          <include>**/*IT.java</include>
        </includes>
      </configuration>
    </plugin>
    
  • 额外修复项:
    修正测试类中的@Autowired拼写错误,确认@Test导入的是org.junit.Test,修正pom中所有dependency的闭合标签。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 09:24:00