Pruebas unitarias en Android usando JUnit

Las pruebas unitarias se realizan para garantizar que los desarrolladores escriban código de alta calidad y sin errores. Se recomienda escribir pruebas unitarias antes de escribir la aplicación real, escribirá pruebas de antemano y el código real deberá cumplir con las pautas de diseño establecidas por la prueba. En este artículo, estamos usando JUnit para probar nuestro código. JUnit es un marco de » Pruebas unitarias » para aplicaciones Java que ya está incluido de forma predeterminada en Android Studio. Es un marco de automatización para pruebas unitarias y de interfaz de usuario. Contiene anotaciones como @Test, @Before , @After , etc. Aquí usaremos solo @Testanotación para mantener el artículo fácil de entender. Tenga en cuenta que vamos a implementar este proyecto utilizando el lenguaje Kotlin .

Implementación paso a paso

Paso 1: Crear un nuevo Proyecto

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio. Tenga en cuenta que seleccione Kotlin como lenguaje de programación.

Paso 2: agregue la dependencia al archivo build.gradle y haga clic en «sincronizar ahora»

    pruebaImplementación «com.google.truth:truth:1.0.1»

   AndroidTestImplementation «com.google.truth:truth:1.0.1»

Paso 3: Trabajar con el archivo RegistrationUtil.kt

Cree un nuevo archivo de Kotlin RegistrationUtil y elija su tipo como objeto. Dado que este es un singleton, no necesitamos crear un objeto mientras lo usamos en otras clases. Tiene una función llamada validRegistrationInput que requiere tres argumentos : nombre de usuario , contraseña y confirmación de contraseña. Estaremos probando esta función con diferentes conjuntos de entradas con los siguientes casos de prueba.

  • El nombre de usuario, la contraseña y la confirmación de la contraseña no deben estar vacíos.
  • La contraseña debe contener al menos dos dígitos.
  • La contraseña coincide con la contraseña confirmada.
  • No se debe tomar el nombre de usuario.

Kotlin

object RegistrationUtil {
 
    private val existingUsers = listOf("Rahul" , "Rohan")
 
    /**
     * The test cases will pass if..
     * ...username/password/confirmPassword is not empty
     * ...password is at least 2 digits
     * ...password matches the confirm Password
     * ...username is not taken
     */
    fun validRegistrationInput(
        userName : String,
        password : String,
        confirmPassword : String
    ) : Boolean {
        // write conditions along with their return statement
        // if username / password / confirm password are empty return false
        if (userName.isEmpty() || password.isEmpty() || confirmPassword.isEmpty()){
            return false
        }
        // if username exists in the existingUser list return false
        if (userName in existingUsers){
            return false
        }
        // if password does not matches confirm password return false
        if (password != confirmPassword){
            return false
        }
        // if digit count of the password is less than 2 return false
        if (password.count { it.isDigit() } < 2){
            return false
        }
        return true
    }
}

Paso 4: crea una clase de prueba

Para crear una clase de prueba de RegistrationUtil , haga clic con el botón derecho en RegistrationUtil, luego haga clic en generar y luego seleccione la prueba. Se abrirá un cuadro de diálogo, desde el cuadro de diálogo, elija Biblioteca de prueba como JUnit4 y mantenga el nombre de la clase como predeterminado, que es RegistrationUtilTest , y haga clic en Aceptar. Después de eso, se abrirá otro cuadro de diálogo para elegir el directorio de destino, elija el que tiene ..app\src\test\. porque nuestra clase de prueba no requiere ningún contexto de la aplicación. A continuación se muestra la captura de pantalla para guiarlo en la creación de la clase de prueba.

Paso 5: Trabajar con el archivo RegistrationUtilTest.kt

Vaya al archivo RegistrationUtilTest.kt y escriba el siguiente código. Se agregan comentarios dentro del código para comprender el código con más detalle.

Kotlin

import com.google.common.truth.Truth.assertThat
import org.junit.Test
 
class RegistrationUtilTest {
    // Write tests for the RegistrationUtil class considering all the conditions
    // annotate each function with @Test
    // We can use backtick to write function name..
    // whatever we write in those backtick will be considered as function name
    @Test
    fun `empty username returns false`(){
        // Pass the value to the function of RegistrationUtil class
        // since RegistrationUtil is an object/ singleton we do not need to create its object
        val result = RegistrationUtil.validRegistrationInput(
            "",
            "123",
            "123"
        )
        // assertThat() comes from the truth library that we added earlier
        // put result in it and assign the boolean that it should return
        assertThat(result).isFalse()
    }
 
    // follow the same for other cases also
    // in this test if username and correctly repeated password returns true
    @Test
    fun `username and correctly repeated password returns true`() {
        val result = RegistrationUtil.validRegistrationInput(
            "Rahul",
            "123",
            "123"
        )
        assertThat(result).isTrue()
    }
 
    // in this test userName already taken returns false
    @Test
    fun `username already taken returns false`() {
        val result = RegistrationUtil.validRegistrationInput(
            "Rohan",
            "123",
            "123"
        )
        assertThat(result).isFalse()
    }
 
    // if confirm password does nt matches the password return false
    @Test
    fun `incorrect confirm password returns false`() {
        val result = RegistrationUtil.validRegistrationInput(
            "Rahul",
            "123",
            "1234"
        )
        assertThat(result).isFalse()
    }
 
    // in this test if password has less than two digits than return false
    @Test
    fun `less than two digit password return false`() {
        val result = RegistrationUtil.validRegistrationInput(
            "Rahul",
            "abcd1",
            "abcd1"
        )
        assertThat(result).isFalse()
    }
}

Paso 6: Ejecute los casos de prueba

Para ejecutar el caso de prueba, haga clic en el pequeño ícono de ejecutar cerca del nombre de la clase y luego seleccione Run RegistrationUtilTest . Si todos los casos de prueba pasan, obtendrá una marca verde en la consola Ejecutar. En nuestro caso, todas las pruebas han pasado.

Repositorio de Github aquí .

Publicación traducida automáticamente

Artículo escrito por introidx y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *