方法是android中的DigitsOnly,文本,TextUtils未被模拟错误

yjghlzjz  于 2023-01-15  发布在  Android
关注(0)|答案(1)|浏览(96)

我创建了一个验证用例,在该用例中,我使用内部使用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)
    }

}
rjzwgtxy

rjzwgtxy1#

在写答案的时候,你不能这样做。因为你看到的android代码不是真正的代码。你不能为它创建单元测试。android.jar中方法的默认实现是到throw exception
您可以做的一件事是,在build.gradle文件中添加以下内容。但它会使Android类不会抛出异常。但它将始终返回默认值。因此测试结果实际上可能不起作用。严格不建议。

android {
  testOptions { 
    unitTests.returnDefaultValues = true
  }
}

更好的方法是从android source复制代码,然后将文件粘贴到src/test/java文件夹下,包名为android.text
Link to Answer

相关问题