如何模拟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
相关产品推荐
相关产品推荐

