我创建了一个验证用例,在该用例中,我使用内部使用TextUtils的isDigitsOnly来验证输入。
override fun isDigitsOnly(size: String): Boolean {
return !size.trim().isDigitsOnly()
}
当我试着测试它时,我得到了这个错误
方法是android中的DigitsOnly。文本。TextUtils未被模拟
有人知道我如何在测试类中模拟textUtils吗
@RunWith(MockitoJUnitRunner::class)
class ValidationInputImplTest {
@Mock
private lateinit var mMockTextUtils: TextUtils
private lateinit var validationInputImpl: ValidationInputImpl
@Before
fun setUp() {
validationInputImpl = ValidationInputImpl()
}
@Test
fun `contains only digits, returns success`() {
val input = "66"
val result = validationInputImpl(input)
assertTrue(result is ValidationResult.Success)
}
}
1条答案
按热度按时间rjzwgtxy1#
在写答案的时候,你不能这样做。因为你看到的android代码不是真正的代码。你不能为它创建单元测试。
android.jar
中方法的默认实现是到throw exception
。您可以做的一件事是,在build.gradle文件中添加以下内容。但它会使Android类不会抛出异常。但它将始终返回默认值。因此测试结果实际上可能不起作用。严格不建议。
更好的方法是从android source复制代码,然后将文件粘贴到
src/test/java
文件夹下,包名为android.text
。Link to Answer