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

Spring Boot移除基础应用测试正常,添加后遇ModelMapper依赖不满足异常

解决Spring Boot测试类导致的Unsatisfied Dependency异常

我来帮你捋捋这个问题——你遇到的Unsatisfied Dependency异常在Spring Boot测试场景里挺常见的,结合你说的「移除测试类就正常运行,添加后就报错」的情况,大概率是测试类的配置或者Spring上下文加载逻辑出了问题。先把你提供的日志片段贴出来方便参考:

相关异常日志片段:

{"@timestamp":"2018-04-23T18:10:39.421+05:30","@version":1,"message":"The following profiles are active: development","logger_name":"com.tmobile.u2.uprising.adjustment.AdjustmentApplicationTests","thread_name":"main","level":"INFO","level_value":20000,"APP_NAME":"adjustmentPublisher"}
{"@timestamp":"2018-04-23T18:10:44..."}

下面是几个可能的原因和对应的解决方法:

1. 测试类的注解配置不正确

Spring Boot测试类需要正确的注解来引导Spring上下文加载,最常见的问题是@SpringBootTest的配置不对:

  • 如果你的测试类和主启动类(AdjustmentApplication)不在同一个包下,必须显式指定启动类:
    @SpringBootTest(classes = AdjustmentApplication.class)
    public class AdjustmentApplicationTests {
        // 测试代码
    }
    
  • 另外,避免在测试类错误使用@ContextConfiguration等注解,导致加载了不完整的上下文。

2. 测试环境缺失必要的依赖Bean

有些Bean可能只在生产/开发环境有实例化条件(比如依赖外部服务、特定数据库),但测试环境无法满足,这时候Spring就会找不到对应的Bean而报错:

  • 对于外部依赖,用@MockBean来模拟实例,比如如果你的业务类依赖了NotificationClient:
    @SpringBootTest
    public class AdjustmentApplicationTests {
        @MockBean
        private NotificationClient notificationClient; // 模拟外部依赖
    
        @Autowired
        private AdjustmentService adjustmentService; // 要测试的类
    
        // 测试方法
    }
    
  • 对于内部Bean,检查是否被正确扫描:确保Bean类加了@Service/@Repository/@Component等注解,且Spring的组件扫描范围包含该Bean所在的包。

3. 测试环境的配置文件问题

日志里显示激活了development profile,要确认测试环境是否正确加载了对应的配置:

  • 在测试类上加上@ActiveProfiles("development"),显式指定要使用的配置文件:
    @SpringBootTest
    @ActiveProfiles("development")
    public class AdjustmentApplicationTests {
        // 测试代码
    }
    
  • 检查application-development.properties(或yaml)文件,确保里面没有缺失必要的配置项(比如数据库连接、第三方服务地址等),这些配置可能是某些Bean实例化的必要条件。

额外排查建议

  • 拿到完整的异常堆栈信息:你提供的日志被截断了,UnsatisfiedDependencyException的完整堆栈会明确指出哪个Bean无法被注入,以及它依赖的哪个Bean找不到,这是定位问题最关键的信息。
  • 检查测试类的包路径:如果测试类的包路径不在主启动类的扫描范围内,Spring无法自动扫描到测试需要的Bean,这时候要么调整包结构,要么在@SpringBootTest里指定scanBasePackages属性。

内容的提问来源于stack exchange,提问作者kaviya .P

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:04:55