Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Android / Pon a prueba tu código con Android Studio

Pon a prueba tu código con Android Studio

Autor jc mouse jueves, septiembre 13, 2018

Realizar pruebas sobre nuestro código nos permiten comprobar su correcto funcionamiento e integración con otros módulos de nuestra aplicación, Android Studio simplifica el desarrollo de este tipo de pruebas con JUnit q viene instalado por defecto, aunque también permite extender funcionalidades utilizando otros frameworks como Mockito, Espresso y UI Automator.

Con Android Studio podrás ejecutar dos tipos de pruebas:

  • Pruebas de Unidad Local. Se ejecutan en la Maquina Virtual Java, son rápidas y no necesitan de un dispositivo físico o emulador de hardware.
  • Pruebas instrumentadas. Estas pruebas se ejecutan en un dispositivo o emulador de hardware ya que necesitan controlar el ciclo de vida y eventos de la app, son más lentos que las pruebas de Unidad Local.

Cuando creamos un proyecto en Android Studio podemos observar que aparte de nuestro paquete donde se ubican nuestros Activity, se crean otros dos paquetes que tal vez te hayas preguntas ¿y para que sirven? pues bien esos paquetes corresponden a (1) Pruebas Instrumentas y (2) Pruebas de Unidad Local, cada uno con un archivo de prueba y sirven para almacenar las clases que sirven para realizar los dos tipos de pruebas con nuestro código.

Android Test Unit

En este post realizaremos un sencillo ejemplo de Pruebas de Unidad Local, para ello necesitamos tener Android Studio abierto y un proyecto creado, para este ejemplo nuestro proyecto se llama “AppFoo(el nombre es lo de menos).

Lo primero que haremos sera crear una clase con el código a testear, creamos un nuevo paquete “foo” y dentro de ella una nueva clase llamada “MiClase.java

import java.util.regex.Pattern;

public class MiClase {

    /**
     * Dado un email valida su formato
     *
     * @param email Correo Electronico de la forma example@mail.com
     * @return boolean TRUE si el mail es valido FALSE en caso contrario
     * */
    public static boolean mailValido(String email)
    {
        if(email!=null){
            String emailRegex = "^[a-zA-Z0-9_+&*-]+(?:\\."+
                    "[a-zA-Z0-9_+&*-]+)*@" +
                    "(?:[a-zA-Z0-9-]+\\.)+[a-z" +
                    "A-Z]{2,4}$";
            Pattern pat = Pattern.compile(emailRegex);
            return pat.matcher(email).matches();
        }
        return false;
    }

    /**
     * Dado tres numeros emnteros, determina el numero mayor
     *
     * @param a valor entero
     * @param b valor entero
     * @param c valor entero
     * @return int Numero mayor entre a, b y c
     * */
    public static int numeroMayor(int a, int b, int c){
        if (a > b && a > c) {
            return a;
        } else if (c > b) {
            return c;
        } else {
           return b;
        }
    }

}

Para crear una clase de prueba, con la clase “MiClase” aún abierta, presiona CTRL+Shit+T y en el menú que aparece, presiona “Create New Test…”

new test

en la ventana que aparece, solo presiona OK

android studio test

Aparece otra ventana, presiona OK

Nuestro proyecto hasta el momento es el siguiente:

pruebas de unidad tutorial

Podríamos crear el archivo de forma manual, pero el IDE te facilita ese trabajo entonces aprovecha.

MiClaseTest.java

En la recién clase creada MiClaseTest.java, escribiremos los métodos para probar nuestro código:

import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.assertTrue;

public class MiClaseTest {

    /**
     * El e-mail que se prueba es valido por tanto el valor que se espera es TRUE
     * */
    @Test
    public void mailValido() {
        assertThat(MiClase.mailValido("jcmouse.bo@gmail.com"), is(true) );
    }

    /**
     * El e-mail que se prueba no es valido por tanto el valor esperado es FALSE
     * */
    @Test
    public void mailNoValido() {
        assertThat(MiClase.mailValido("correo123[.]hotmail.com"), is(false) );
    }

    /**
     * dado tres numeros (5,3,7) el valor esperado es 7 por tanto
     * el valor esperado y el calculado deben ser iguales
     * */
    @Test
    public void numeroMayor_valorCorrecto() {
        int a = 5;
        int b = 3;
        int c = 7;
        int resultadoEsperado = 7;
        int resultadoCalculado = MiClase.numeroMayor(a, b, c);
        assertEquals(resultadoEsperado, resultadoCalculado);
    }

    /**
     * dado tres numeros (5,3,7) el valor esperado es 3 por tanto
     * el valor esperado y el calculado NO deben ser iguales
     * */
    @Test
    public void numeroMayor_valorIncorrecto() {
        int a = 5;
        int b = 3;
        int c = 7;
        int resultadoEsperado = 3;
        int resultadoCalculado = MiClase.numeroMayor(a, b, c);
        assertTrue(resultadoEsperado != resultadoCalculado);
    }

}

Ejecutar la prueba

Para ejecutar la prueba, podemos hacerlo individualmente o clase por clase, es decir, si hacemos clic derecho sobre el paquete de pruebas (tests) y seleccionamos Run, se ejecutaran las pruebas para todas las clases contenidas en ese paquete. Si deseamos ejecutar solo una clase, clic derecho sobre la clase en cuestión y seleccionar Run ‘nombre_de_la_clase’

Unit Test apps

Si tenemos todos nuestros métodos en color verde, quiere decir que la prueba se ejecuto con éxito, si tenemos algún error, este aparecerá en color rojo.

Métodos Assert

  • assertThat: Compara dos objetos
  • assertTrue: comprueba que expresión evalúe a TRUE
  • assertFalse: comprueba que expresión evalúe a FALSE
  • assertEquals: comprueba que valor esperado esperado sea igual al calculado
  • assertNull: comprueba que objeto sea NULL
  • assertNotNull: comprueba que objeto no sea NULL
  • assertSame: comprueba quedos objetos sean los mismos  (no es lo mismo que sean iguales)
  • assertNotSame: comprueba que dos objetos no sean los mismos
  • fail: hace que el test termine con fallo

enjoy!!!

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Personalizar iconos de un JTree

Personalizar iconos de un JTree

JTree cuenta con métodos que nos permiten cambiar los iconos de cada nodo según su estado, sin embargo a veces esto no e...

Crea una libreria TimeChooser – Selector de Tiempo

Crea una libreria TimeChooser – Selector de Tiempo

En este post crearemos un componente gráfico para java que nos permitirá seleccionar la hora del día de una manera senci...

Material Design: Paleta de Colores

Material Design: Paleta de Colores

“Material Design es una guía integral para el diseño visual, de movimientos y de interacción en distintas platafor...

Dibujar primitivas 2d en html5

Dibujar primitivas 2d en html5

HTML5 junto a javascript permite dibujar figuras llamadas shapes sobre un lienzo que recibe el nombre de “canvas...

Crear PopupMenu (Ventana Emergente)

Crear PopupMenu (Ventana Emergente)

En este tutorial crearemos una aplicación android que nos permitirá abrir un PopupMenu de donde podremos seleccionar una...

Sonidos y Eventos en Swing

Sonidos y Eventos en Swing

La siguiente clase reproduce sonidos WAV en controles Swing de Java Netbeans, los controles son pasados en el constructo...

Comparte lo que sabes

Categorias

Últimas entradas

HyperSQL DataBase (HSQLDB) es un moderno administrador de bases de datos relacionales, es portátil e implementado en jav...

En este post veremos como imprimir secciones de un formulario en java implementando la Interface Printable. La clase que...

En este post aprenderemos lo que es la clonación de objetos en java o lo que es lo mismo, generación de nuevas instancia...

El índice TIOBE (TIOBE, The Importance of Being Earnest – “La importancia de ser honesto” – refe...

Android Bolivia

MAUS