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

如何模拟Boolean字段?遇报错:Cannot mock/spy class java.lang.Boolean

Mockito模拟Boolean字段报错的解决办法

问题场景

模拟Boolean类型字段返回指定值时触发报错,错误信息:

Cannot mock/spy class java.lang.Boolean
Mockito cannot mock/spy because :
- Cannot mock wrapper types, String.class or Class.class

使用的模拟代码:

val isFlag : Boolean = mock()
whenever(myObject.flag).thenReturn(isFlag)

需求是设置该字段的返回值。

解决方案

Mockito禁止模拟基本类型包装类(如Boolean、String),直接使用真实的Boolean值即可,无需mock:

  • 定义真实的Boolean值(根据测试需求设为true或false):
    val isFlag = true
    
  • 配置返回该真实值:
    whenever(myObject.flag).thenReturn(isFlag)
    

如果myObject是真实实例而非mock对象,需要修改私有字段的话,可通过反射实现:

val field = myObject::class.java.getDeclaredField("flag")
field.isAccessible = true
field.set(myObject, true) // 替换为你需要的Boolean值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 14:12:03