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

JUnit中Mock RabbitAdmin类时出现空指针异常问题求助

解决RabbitAdmin Mock时的NullPointerException问题

问题出在链式调用的Mock逻辑上:rabbitAdmin.getQueueProperties("responseQueueName")默认会返回null,直接调用它的get("QUEUE_MESSAGE_COUNT")方法,自然触发空指针异常。Mockito无法直接处理这种链式Mock调用,必须拆分步骤。

解决方案1:Mock Map对象分步处理

先Mock getQueueProperties 方法让它返回一个Mock的Map,再单独Mock这个Map的get方法:

// 额外声明一个Mock的Map
@Mock
Map<String, Object> queuePropertiesMap;
@Mock
RabbitAdmin rabbitAdmin;
@InjectMocks
MyOriginalClass classObj;

测试方法里的代码修改为:

// 第一步:让getQueueProperties返回Mock的Map
Mockito.when(rabbitAdmin.getQueueProperties("responseQueueName")).thenReturn(queuePropertiesMap);
// 第二步:Mock Map的get方法返回目标值
Mockito.when(queuePropertiesMap.get("QUEUE_MESSAGE_COUNT")).thenReturn(0);

解决方案2:返回真实Map(更简单)

如果不需要灵活修改返回值,直接创建一个真实的Map并返回:

@Mock
RabbitAdmin rabbitAdmin;
@InjectMocks
MyOriginalClass classObj;

测试方法里:

Map<String, Object> queueProps = new HashMap<>();
queueProps.put("QUEUE_MESSAGE_COUNT", 0);
Mockito.when(rabbitAdmin.getQueueProperties("responseQueueName")).thenReturn(queueProps);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 11:04:58