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

AssertionFailedError排查:createParcel测试返回null的原因分析

问题原因分析
  • Mapper实例或转换逻辑未正确生效
    虽然其他方法里的Mapper调用正常,但createParcel用到的convertValue方法可能存在特殊情况:如果用@Spy注解让Mapper保留部分真实调用逻辑,那convertValue可能未被正确初始化;要是使用第三方Mapper(比如ModelMapper、MapStruct),测试环境里可能没配置好映射规则,或者缺少必要依赖,导致转换直接返回null。

  • ParcelDTO与Parcel类的映射不兼容
    convertValue转换失败返回null,大概率是字段匹配出了问题:

    • ParcelDTO的字段类型和Parcel类对应字段不兼容(比如DTO传字符串类型,实体类是Integer且未配置转换规则)
    • Parcel类有私有构造方法,Mapper无法实例化对象
    • 字段名不匹配且未添加映射注解(比如DTO叫parcelCode,实体类叫code,没加@Mapping这类注解)
  • Mockito的Mock配置遗漏
    如果你的Mapper是用@Mock注解注入的,那所有方法默认返回null,除非手动mock了方法的返回值。其他方法测试通过,说明那些方法的Mapper调用都做过mock,但createParcel里的convertValue忘了设置mock返回值,自然就返回null了。

  • 异常处理后的返回逻辑问题
    你添加null判断后抛出自定义IllegalArgumentException,但测试代码里要么没捕获这个异常,要么服务类在抛出异常后没有返回预期的非null值(比如本该返回创建后的Parcel对象,结果因为异常直接返回null),最终触发了null ==> expected: not <null>的断言失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:55:16