Los asserts son métodos que provienen de la librería Java Unit, y su objetivo es crear una base actualizada para las pruebas del lado del desarrollador en la JVM.

Esto incluye centrarse en Java 8 y versiones posteriores, además de permitir muchos estilos diferentes de pruebas.

Mediante estas pruebas podemos experimentar con nuestro código y verificar que esté.

funcionando, para esta ocasión, estaremos aprendiendo como funcionan los asserts: assertThat(), asserNotSame(), assertNotNull().

Afirma que el real satisface la condición especificada por el comparador. De lo contrario, se genera un AssertionError con información sobre el comparador y el valor fallido.

Afirma que dos objetos no se refieren al mismo objeto. Si se refieren al mismo objeto, se genera un AssertionError sin mensaje.

Afirma que un objeto no es nulo. Si es así, se lanza un AssertionError.

Para empezar, instalaremos el entorno gráfico "Visual Studio" en el cual podremos instalar una extensión de JUnit que nos permite hacer las pruebas.Para esto vamos a seguir los pasos a continuación:

1.Buscaremos en google la página oficial de Visual Studio Code, que nos permita descargarlo.

2.Seleccione según el sistema operativo que corresponda.

3.Seleccione la carpeta en la que desea guardar la herramienta Visual Studio Code.

4.Revise que la descarga se esté ejecutando correctamente.

5.Seleccione siguiente.

6.Busque y seleccione la carpeta donde desea guardarlo, y de click en siguiente.

7.Si desea seleccionar una carpeta distinta, haga click en examinar, si no es así, haga clic en siguiente.

8.Seleccione las tareas adicionales que desea realizar durante la instalación, y haga clic en siguiente.

9.Finalmente de clic en instalar.

10.Ingrese al apartado de extensiones, y a continuación instale Test Runner for java.

El assertNotNull(), es un tipo de afirmación Assertions que sirve para afirmar que un tipo de dato u objeto no es nulo.

A continuación se muestra un ejemplo donde se ejecuta una prueba unitaria, para esto hacemos uso de la clase AgregarMenu y AgregarMenuTest. En la clase AgregarMenu , se establecen 3 atributos:

1. Receta

2. Ingrediente

3. Cantplatos

También se le asigna un constructor con los 3 parámetros, así como los getters y setters.

package control;

public class AgregarMenu {

    private String receta;
    private String ingredientes;
    private int cantp;
    
    public AgregarMenu(String receta, String ingredientes, int cantp) {
        this.receta = receta;
        this.ingredientes = ingredientes;
        this.cantp = cantp;
    }
    public String getReceta() {
        return receta;
    }
    public void setReceta(String receta) {
        this.receta = receta;
    }
    public String getIngredientes() {
        return ingredientes;
    }
    public void setIngredientes(String ingredientes) {
        this.ingredientes = ingredientes;
    }
    public int getCantp() {
        return cantp;
    }
    public void setCantp(int cantp) {
        this.cantp = cantp;
    }
    
}

A continuación se crea un método en la clase AgregarMenuTest, donde primero se tiene que importar la librería org.junit.assert.

- Después se agrega "@Test"

- Después se crea un método llamado "AgregarMenuTest", donde se debe crear un objeto de la clase "AgregarMenu"

-A continuación se usa el assertNotNull(), y se le pasa el parámetro (am), que fué como nombramos al objeto.

-En este ejemplo en específico también usamos AssertEquals(), para comparar un valor esperado, y un valor obtenido.

package test;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;

import org.junit.Test;

import control.AgregarMenu;

public class AgregarMenuTest {

    @Test
    public void AgregarMenuTest(){
        AgregarMenu am = new AgregarMenu("Trucha", "Trucha, arroz, papa y ensalada", 5);
        assertNotNull(am);
        assertEquals("Trucha", am.getReceta());
        assertEquals("Trucha, arroz, papa y ensalada", am.getIngredientes());
        assertEquals(5, am.getCantp());

    }
   

-Para finalizar hacemos la prueba que se muestra en el apartado de Test Results, donde debe aparecer una verificación de color verde.

Creación de la Clase:

Crea una clase llamada `AgregarMenu` que representará los atributos, métodos y objetos propios de esta clase. Asegúrate de definir los campos y los métodos adecuados.

package control;

public class AgregarMenu {
    private String ingredientes;
    private int cantidadDePlatos;

    public AgregarMenu(String ingredientes, int cantidadDePlatos) {
        this.ingredientes = ingredientes;
        this.cantidadDePlatos = cantidadDePlatos;
    }

    public String getIngredientes() {
        return ingredientes;
    }

    public void setIngredientes(String ingredientes) {
        this.ingredientes = ingredientes;
    }

    public int getCantidadDePlatos() {
        return cantidadDePlatos;
    }

    public void setCantidadDePlatos(int cantidadDePlatos) {
        this.cantidadDePlatos = cantidadDePlatos;
    }
}

Creación de la clase para las pruebas unitarias:

Crea una clase de prueba llamada `AgregarMenuTest`. Asegúrate de importar las bibliotecas necesarias para JUnit y configurar las anotaciones de prueba.

package test;

import control.AgregarMenu;
import static org.junit.jupiter.api.Assertions.assertNotSame;
import org.junit.jupiter.api.Test;

public class AgregarMenuTest {

    @Test
    public void testNoMismaReferencia() {
        AgregarMenu menu1 = new AgregarMenu("Ingredientes1", 10);
        AgregarMenu menu2 = new AgregarMenu("Ingredientes2", 20);

        assertNotSame(menu1, menu2, "Las instancias de AgregarMenu no deben ser la misma referencia");
    }
}

Ejecución de las Pruebas en VSCode con "Test Runner for Java":

Abre el archivo AgregarMenuTest.java en VSCode.

Asegúrate de tener la extensión "Test Runner for Java" instalada. Esta extensión proporciona una interfaz de usuario más amigable para ejecutar pruebas unitarias en proyectos de Java.

Una vez que la extensión esté instalada, deberías ver un icono de triángulo verde en la parte superior derecha del archivo AgregarMenuTest

Haz clic en este icono para ejecutar las pruebas unitarias. La extensión "Test Runner for Java" detectará automáticamente tus pruebas y las ejecutará.

Observa el resultado de la prueba en la parte inferior de la ventana de VSCode. La extensión mostrará información detallada sobre las pruebas que se ejecutaron y si fueron exitosas o fallaron.

Como casi todos los asserts, el método assertThat() verifica que una función 'ingresada' sea equivalente a la 'esperada'.

Para entender esto de una mejor manera pasemos a ver el código de la clase donde se encuentran las funcionalidades, en este caso

un administrador de un restaurante tiene una lista de ingredientes que puede ver.

public class Admin {
        
        private String[] ingredientes= new String[0];;
        
        public String[] verIngredientes() {
                return ingredientes;

El método assertThat(), nos ayudará a verificar los ingredientes que tenga un administrador, la sintaxis es simple, veamosla:

class AdminTest {

        private static String[] ingredientes= new String[0];;
        private Admin admin = new Admin();

        @Test

        void verIngredientesTest() {
                for(int i =0; i<ingredientes.length;i++) {
                        assertThat(ingredientes[i],is(admin.verIngredientes()[i]));
                }
        }
}

Explicando un poco el código, se recorre toda la lista de los ingredientes que tiene el administrador, comparando ingrediente por ingrediente, para verificar que sí coinciden.

El primer parámetro que recibe es el valor actual del ingrediente, y el segundo parámetro es el que va a ser igualado para hacer la comparación.

Es curioso ver un método `is()` que es obligatorio ponerlo en el método para que funcione, dentro de este método es donde se escribe el valor a ser igualado.