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

Mockito单元测试:EditText文本设置无效致验证器测试异常

搞定EditText测试中文本模拟的问题

嘿,我来帮你解决这个测试验证器时遇到的坑!你现在的问题根源在于mock了SpannableStringBuilder本身,而不是让EditText返回一个真实的文本实例——Mock生成的假对象只会输出哈希码,不会返回你想要的实际文本内容。

正确的实现方式

直接创建真实的SpannableStringBuilder实例就行,它是个普通类,测试里用完全没问题:

// 直接创建真实的文本实例,传入你要模拟的邮箱地址
val emailText = SpannableStringBuilder("test@gmail.com")
// 让mock的EditText返回这个真实文本
`when`(emailField.text).thenReturn(emailText)
// 放心调用验证器方法
validator.checkEmail(emailField)

为啥之前的写法不行?

你之前的代码把SpannableStringBuilder也mock了,这就相当于造了个“假的文本容器”,它根本不会管你传入的"test@gmail.com"是什么,默认的toString()只会输出它的对象哈希码,自然拿不到预期的文本。只有真实的SpannableStringBuilder实例才会正确返回你设置的内容。

额外小提示

如果后续需要模拟空文本、错误格式的输入,直接新建对应内容的SpannableStringBuilder实例就好,没必要再去mock这个类,简单又靠谱~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:04:55