Micronaut test con junit


Realizar test con micronaut

oscar Escrito por oscar 06 March 2023 798 1

Contenido

Precondiciones

1. Crearemos un proyecto, como lo explicamos en crear primer proyecto con micronaut, si no tiene instalado el entorno de trabajo, tambien tenemos el post /blog/instalar-micronaut.

2. Se requiere que en el archivo pom.xml en las dependencias (dependencies), debemos añadir la dependencia de jUnit test si no esta.

<dependencies>
    ...
    <dependency>
        <groupId>io.micronaut.test</groupId>
        <artifactId>micronaut-test-junit5</artifactId>
        <scope>test</scope>
    </dependency>
    ...
</dependencies>

jUnit

La documentación oficial de JUnit se encuentra en el sitio web de JUnit en el siguiente enlace: https://junit.org/junit5/docs/current/user-guide/

En el sitio web oficial de JUnit, se puede encontrar una gran cantidad de información sobre cómo utilizar la librería, incluyendo tutoriales, guías de usuario, referencias de API y ejemplos de código. También hay documentación disponible para versiones anteriores de JUnit, si se necesitan.

Además de la documentación oficial, existen muchos recursos en línea que ofrecen información adicional y tutoriales sobre JUnit, como blogs, cursos en línea y libros. Algunos ejemplos de recursos adicionales incluyen:

En general, la documentación oficial de JUnit es una buena fuente de información y una excelente manera de empezar a aprender y utilizar la librería de pruebas unitarias en Java.

Estructura del proyecto

Para este ejemplo creamos un proyecto como lo vimos en el artículo crear primer proyecto con micronaut, la estructura es la siguiente:

C:.
│   .gitignore
│   micronaut-cli.yml
│   mvnw
│   mvnw.bat
│   pom.xml
│   README.md
│
├───.mvn
├───src
│   ├───main
│   │   ├───java
│   │   │   └───com
│   │   │       └───codigoelectronica
│   │   │               Application.java
│   │   │
│   │   └───resources
│   │           application.yml
│   │           logback.xml
│   │
│   └───test
│       └───java
│           └───com
│               └───codigoelectronica
│                       AppTest.java
│
└───target

Para este ejemplo de ejecución de casos de prueba solo vamos a trabajar con el archivo AppTest.java donde crearemos las distintas afirmaciones.

Crear clase Java para test

Esta clase se crea automáticamente, al crear el proyecto, pero la dejo por si quieren crear nuevas clases de pruebas para distintos casos.

package com.codigoelectronica;

import io.micronaut.runtime.EmbeddedApplication;
import io.micronaut.test.extensions.junit5.annotation.MicronautTest;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import org.junit.jupiter.api.Assertions;

import jakarta.inject.Inject;

@MicronautTest
class AppTest {

    private Logger logger = LoggerFactory.getLogger(this.getClass());

    @Inject
    EmbeddedApplication<?> application;

    @Test
    void testItWorks() {
        logger.info("testItWorks");
        Assertions.assertTrue(application.isRunning());
    }
}

Para que una clase se convierta en test, debemos incluir la anotación @MicronautTest, ademas de los métodos los debemos indicar con la anotación @Test.

Afirmaciones (Assertions)

Las afirmaciones en JUnit se realizan utilizando los métodos de aserción proporcionados por la librería. Estos métodos incluyen assertEqual(), assertTrue(), assertFalse() y assertNull(), entre otros. Cada uno de estos métodos acepta uno o más argumentos, que representan los valores o condiciones que se están evaluando.

Por ejemplo, si se quiere probar que una función suma correctamente dos números enteros, se puede utilizar el método assertEquals() para comparar el resultado de la función con el valor esperado. Si el resultado de la función y el valor esperado no son iguales, el método de aserción generará una excepción indicando que la prueba ha fallado.

assertEquals

assertEquals es un método de aserción (assertion) que se utiliza en el framework de pruebas unitarias JUnit para comprobar que dos valores son iguales. Este método comprueba que el valor esperado (expected) es igual al valor actual (actual) y, si no lo es, la prueba unitaria falla.

La sintaxis de assertEquals es la siguiente:

@Test
void testAssertEquals() {
    logger.info("testAssertEquals");
    assertEquals("testAssertEquals", "testAssertEquals");
}

Este método se puede utilizar con diferentes tipos de datos, como enteros, flotantes, cadenas de caracteres, objetos, entre otros. Además, se puede especificar una precisión para los números decimales, para evitar problemas de redondeo.

assertFalse

@Test
void testAssertFalse() {
    logger.info("assertFalse");
    boolean variableFalse = false;
    assertFalse(variableFalse);
}

assertTrue

@Test
void testAssertTrue() {
    logger.info("assertTrue");
    boolean variableTrue = true;
    assertTrue(variableTrue);
}

assertNotNull

@Test
void testAssertNotNull() {
    logger.info("assertNotNull");
    String mensaje = "test";
    assertNotNull(mensaje);
}

assertNull

@Test
void testAssertNull() {
    logger.info("assertNull");
    String mensaje = null;
    assertNull(mensaje);
}

assertThrows

@Test
public void testAssertThrows() {
    logger.info("assertThrows");
    Exception exception = assertThrows(NumberFormatException.class, () -> {
        Integer.parseInt("1a");
    });

    String expectedMessage = "For input string";
    String actualMessage = exception.getMessage();

    assertTrue(actualMessage.contains(expectedMessage));
}

Ejecutar un test en micronaut 

Una ves creados los test necesarios procedemos a la ejecución para ello usamos el siguiente comando:

.\mvnw test

Esto dará la siguiente respuesta:

C:\code\micronaut\Test> .\mvnw test
[INFO] Scanning for projects...
[INFO]
...
[INFO] 
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.codigoelectronica.SingletonTest
13:19:40.650 [main] INFO  i.m.context.env.DefaultEnvironment - Established active environments: [test]
13:19:41.296 [main] INFO  com.codigoelectronica.SingletonTest - assertNotNull
13:19:41.305 [main] INFO  com.codigoelectronica.SingletonTest - assertFalse
13:19:41.307 [main] INFO  com.codigoelectronica.SingletonTest - testAssertEquals
13:19:41.310 [main] INFO  com.codigoelectronica.SingletonTest - assertThrows
13:19:41.313 [main] INFO  com.codigoelectronica.SingletonTest - assertNull
13:19:41.315 [main] INFO  com.codigoelectronica.SingletonTest - assertTrue
13:19:41.316 [main] INFO  com.codigoelectronica.SingletonTest - testItWorks
[INFO] Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.18 s - in com.codigoelectronica.SingletonTest
[INFO] 
[INFO] Results:
[INFO]
[INFO] Tests run: 7, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  5.746 s
[INFO] Finished at: 2023-03-08T13:19:41-05:00
[INFO] ------------------------------------------------------------------------

 


Comentario

Debe aceptar antes de enviar
codelectronica
codelectronica

09 January 2024 16:39

Que otras pruebas se pueden hacer, espero sus comentarios.