【发布时间】:2021-11-20 06:55:24
【问题描述】:
我想测试返回布尔值的DesignInputField 的方法checkTextLength()。但它每次都返回false。尝试模拟库来做到这一点。当我写这段代码Mockito.when(designInputField.checkTextLength()).thenReturn(true) 它返回true。但我认为这不是测试这段代码的正确方法。
DesignInputField.kt
class DesignInputField @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : ConstraintLayout(context, attrs, defStyleAttr) {
private var textLength = 1;
private var textLengthType = 1;
}
fun checkTextLength(): Boolean {
return when (textLengthType) {
0 -> text.length < textLength
1 -> text.length > textLength
2 -> text.length <= textLength
3 -> text.length >= textLength
4 -> text.length == textLength
else -> false
}
}
DesignInputFieldTest.kt
@RunWith(MockitoJUnitRunner::class)
class DesignInputFieldTest{
@Mock
lateinit var designInputField: DesignInputField
@Test
fun `cardNameGreaterThanOne`() {
Mockito.`when`(designInputField.text).thenReturn("ab")
Assert.assertEquals(true,designInputField.checkTextLength())
}
【问题讨论】:
标签: android kotlin testing mocking mockito