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

使用Mockito 3.8无法Mock AEM核心组件Teaser接口问题求助

报错原因

报错核心原因并非Teaser接口不符合Mock要求(公共接口本身满足Mockito mock的基础条件),问题来自报错末尾的底层异常:java.lang.IllegalStateException: Type not found: com.adobe.cq.wcm.core.components.internal.jackson.ComponentDataModelSerializer

  • Teaser接口上标注了Jackson序列化相关注解,关联了上述内部包下的序列化实现类
  • 你的项目中AEM WCM Core Components依赖通常会设置为provided范围(AEM服务器运行时自带该依赖,无需打包部署),导致测试类路径下没有加载该内部序列化类
  • Mockito 3.8版本mock带第三方注解的接口时,会强制解析注解关联的所有类元数据,类加载失败后就会抛出外层的无法mock异常
解决方案

可按优先级选择以下任意一种方案处理:

  • 优先升级Mockito版本:将Mockito Core升级到3.9及以上版本(推荐4.0+稳定版),该版本开始优化了注解解析逻辑,不会强制加载注解关联的非必要类,无需改动其他配置即可解决问题
  • 补充测试依赖:在项目的测试依赖中引入对应版本的AEM WCM Core Components依赖,范围设置为test,确保测试类路径下可以加载到内部序列化类
  • 跳过注解解析:如果无法升级Mockito版本,mock的时候指定跳过注解解析即可,示例代码如下:
import org.mockito.Mockito;
import com.adobe.cq.wcm.core.components.models.Teaser;

// mock逻辑
Teaser mockTeaser = Mockito.mock(Teaser.class, Mockito.withSettings().withoutAnnotations());

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:09:02