"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Pruebas avanzadas con JUnit 5

Pruebas avanzadas con JUnit 5

Publicado el 2024-08-07
Navegar:105

Advanced Testing with JUnit 5

JUnidad. Introduce varias funciones y mejoras potentes que facilitan la escritura, organización y ejecución de pruebas. Comprender estas funciones avanzadas puede ayudarle a crear conjuntos de pruebas más sólidos y fáciles de mantener.

¿Qué es JUnit 5?

JUnit 5 es una actualización importante del marco JUnit, diseñado para ser más flexible y modular. Consiste en tres componentes principales:

  1. Plataforma JUnit: la base para lanzar marcos de prueba en JVM.
  2. JUnit Jupiter: El nuevo modelo de programación y modelo de extensión para pruebas de escritura.
  3. JUnit Vintage: proporciona soporte para ejecutar pruebas JUnit 3 y JUnit 4 en la plataforma JUnit 5.

Características clave de JUnit 5

  1. Nombres para mostrar: anota pruebas con nombres para mostrar personalizados para una mejor legibilidad.
  2. Pruebas anidadas: organiza las pruebas jerárquicamente para reflejar la estructura del código probado.
  3. Pruebas dinámicas: Crea pruebas dinámicamente en tiempo de ejecución.
  4. Etiquetado y filtrado: Agrupa pruebas usando etiquetas y fíltralas durante la ejecución.
  5. Afirmaciones y suposiciones: soporte mejorado para afirmaciones y suposiciones para controlar el flujo de ejecución de pruebas.

Ejemplo: uso de funciones avanzadas de JUnit 5

  1. Nombres para mostrar personalizados:
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;

@DisplayName("Calculator Tests")
class CalculatorTest {

    @Test
    @DisplayName("Addition Test")
    void testAddition() {
        assertEquals(2, 1   1, "1   1 should equal 2");
    }
}
  1. Pruebas anidadas:
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;

class OuterTest {

    @Nested
    class InnerTest {
        @Test
        void innerTest() {
            // Test logic here
        }
    }
}
  1. Pruebas dinámicas:
import org.junit.jupiter.api.DynamicTest;
import org.junit.jupiter.api.TestFactory;
import java.util.stream.Stream;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.DynamicTest.dynamicTest;

class DynamicTestsDemo {

    @TestFactory
    Stream dynamicTests() {
        return Stream.of(1, 2, 3, 4, 5)
                .map(number -> dynamicTest("Test number "   number, () -> assertTrue(number > 0)));
    }
}
  1. Etiquetado y filtrado:
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;

class TaggingTest {

    @Test
    @Tag("fast")
    void fastTest() {
        // Fast test logic here
    }

    @Test
    @Tag("slow")
    void slowTest() {
        // Slow test logic here
    }
}
  1. Afirmaciones y suposiciones:
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assumptions.assumeTrue;

class AssertionsDemo {

    @Test
    void testException() {
        assertThrows(IllegalArgumentException.class, () -> {
            throw new IllegalArgumentException("Exception message");
        });
    }

    @Test
    void testAssumption() {
        assumeTrue(5 > 1);
        // Test logic here
    }
}

Conclusión

JUnit 5 trae una gran cantidad de nuevas características y mejoras que lo convierten en una poderosa herramienta para las pruebas modernas de Java. Al aprovechar estas capacidades avanzadas, puede crear conjuntos de pruebas más organizados, flexibles y fáciles de mantener, garantizando que su código sea sólido y confiable.

Declaración de liberación Este artículo se reproduce en: https://dev.to/adaumircosta/advanced-testing-with-junit-5-1nh?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3