En este tema, aprenderemos cómo ejecutar suites de tests en JUnit. Las suites de tests permiten agrupar múltiples tests y ejecutarlos juntos, lo que facilita la organización y ejecución de grandes conjuntos de tests. Este enfoque es especialmente útil en proyectos grandes donde los tests están distribuidos en varios archivos.

Conceptos Clave

  1. Suite de Tests: Un conjunto de tests que se ejecutan juntos.
  2. JUnit Platform Suite: Una anotación que permite definir y ejecutar una suite de tests en JUnit 5.
  3. Selectores de Clases y Paquetes: Herramientas para especificar qué tests incluir en la suite.

Paso a Paso: Ejecutando una Suite de Tests

  1. Configuración Inicial

Antes de comenzar, asegúrate de tener un proyecto de Java con JUnit 5 configurado. Si no lo has hecho, revisa el módulo "Configurando JUnit" para obtener instrucciones detalladas.

  1. Creando una Suite de Tests

Para crear una suite de tests en JUnit 5, utilizamos la anotación @Suite junto con @SelectClasses o @SelectPackages. Aquí hay un ejemplo básico:

import org.junit.platform.suite.api.SelectClasses;
import org.junit.platform.suite.api.Suite;

@Suite
@SelectClasses({TestClass1.class, TestClass2.class})
public class MyTestSuite {
}

En este ejemplo, MyTestSuite es una suite que ejecutará los tests definidos en TestClass1 y TestClass2.

  1. Ejecutando la Suite de Tests

Para ejecutar la suite de tests, simplemente ejecuta la clase MyTestSuite como lo harías con cualquier otra clase de test en JUnit. La mayoría de los entornos de desarrollo integrados (IDEs) como IntelliJ IDEA, Eclipse o NetBeans permiten ejecutar tests con un simple clic derecho sobre la clase y seleccionando "Run".

  1. Seleccionando Paquetes

Si deseas incluir todos los tests de un paquete específico, puedes usar la anotación @SelectPackages:

import org.junit.platform.suite.api.SelectPackages;
import org.junit.platform.suite.api.Suite;

@Suite
@SelectPackages("com.example.tests")
public class MyPackageTestSuite {
}

Este ejemplo ejecutará todos los tests en el paquete com.example.tests.

  1. Combinando Selectores

También puedes combinar @SelectClasses y @SelectPackages para una mayor flexibilidad:

import org.junit.platform.suite.api.SelectClasses;
import org.junit.platform.suite.api.SelectPackages;
import org.junit.platform.suite.api.Suite;

@Suite
@SelectClasses({TestClass1.class})
@SelectPackages("com.example.tests")
public class CombinedTestSuite {
}

En este caso, CombinedTestSuite ejecutará TestClass1 y todos los tests en el paquete com.example.tests.

Ejemplo Completo

Aquí tienes un ejemplo completo de una suite de tests que incluye tanto clases específicas como un paquete:

import org.junit.platform.suite.api.SelectClasses;
import org.junit.platform.suite.api.SelectPackages;
import org.junit.platform.suite.api.Suite;

@Suite
@SelectClasses({TestClass1.class, TestClass2.class})
@SelectPackages("com.example.tests")
public class FullTestSuite {
}

Ejercicio Práctico

Ejercicio

  1. Crea dos clases de test, TestClass1 y TestClass2, cada una con al menos un método de test.
  2. Crea una suite de tests llamada MyTestSuite que incluya ambas clases de test.
  3. Ejecuta la suite de tests y verifica que todos los tests se ejecuten correctamente.

Solución

TestClass1.java

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertTrue;

public class TestClass1 {
    @Test
    void testMethod1() {
        assertTrue(true);
    }
}

TestClass2.java

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertTrue;

public class TestClass2 {
    @Test
    void testMethod2() {
        assertTrue(true);
    }
}

MyTestSuite.java

import org.junit.platform.suite.api.SelectClasses;
import org.junit.platform.suite.api.Suite;

@Suite
@SelectClasses({TestClass1.class, TestClass2.class})
public class MyTestSuite {
}

Ejecución

Ejecuta MyTestSuite en tu IDE y verifica que ambos métodos de test (testMethod1 y testMethod2) se ejecuten correctamente.

Conclusión

En esta sección, hemos aprendido cómo crear y ejecutar suites de tests en JUnit. Las suites de tests son una herramienta poderosa para organizar y ejecutar múltiples tests de manera eficiente. En el siguiente módulo, exploraremos el uso de mocking con JUnit, una técnica esencial para aislar y probar componentes individuales de tu aplicación.

© Copyright 2024. Todos los derechos reservados