es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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())
    }
}
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para probar adecuadamente el método checkTextLength() deDesignInputField, debes probarlo con valores de entrada reales para textLength ytextLengthType. Actualmente, en tu caso de prueba, solo estás simulando la propiedad ‘text’ de DesignInputField.

    En lugar de simular todo el objeto DesignInputField, puedes crear una instancia de él y pasar los valores deseados paratextLength y textLengthType. Aquí hay un ejemplo de cómo podrías probar el método checkTextLength () usando una instancia real de DesignInputField:

    @RunWith(MockitoJUnitRunner :: class)
    class DesignInputFieldTest {
    
        @Test
        fun `cardNameGreaterThanOne`() {
            // Cree una instancia real de DesignInputField con valores deseados para textLength y textLengthType
            val designInputField = DesignInputField (context, null, 0)
            designInputField.textLength = 2
            designInputField.textLengthType = 1
    
            // Pruebe checkTextLength () con valores de entrada reales
            designInputField.text = "ab"
            Assert.assertFalse (designInputField.checkTextLength ())
    
            designInputField.text = "abc"
            Assert.assertTrue (designInputField.checkTextLength ())
        }
    }
    

    En este caso de prueba, creas una instancia real de DesignInputField y estableces los valores deseados para textLength ytextLengthType. Luego, pruebas el método checkTextLength() con valores de entrada reales para la propiedad text. De esta manera, puedes probar adecuadamente el método usando una entrada real y asegurarte de que devuelve la salida esperada.

Comments are closed.