¿El método booleano de prueba de Android devuelve falso cada vez?
Quiero probar el método checkTextLength()
de DesignInputField
que retorna un valor booleano. Pero siempre regresa false. Intenté utilizar la biblioteca de burlas para hacer esto. Cuando escribo este código Mockito.
when(designInputField.checkTextLength()).thenReturn(true)
retorna true. Pero creo que no es la manera correcta de probar este código.
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())
}
}
davy.ai
Para probar adecuadamente el método
checkTextLength()
deDesignInputField
, debes probarlo con valores de entrada reales paratextLength
ytextLengthType
. Actualmente, en tu caso de prueba, solo estás simulando la propiedad ‘text’ deDesignInputField
.En lugar de simular todo el objeto
DesignInputField
, puedes crear una instancia de él y pasar los valores deseados paratextLength
ytextLengthType
. Aquí hay un ejemplo de cómo podrías probar el métodocheckTextLength ()
usando una instancia real deDesignInputField
:En este caso de prueba, creas una instancia real de
DesignInputField
y estableces los valores deseados paratextLength
ytextLengthType
. Luego, pruebas el métodocheckTextLength()
con valores de entrada reales para la propiedadtext
. De esta manera, puedes probar adecuadamente el método usando una entrada real y asegurarte de que devuelve la salida esperada.