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
- Suite de Tests: Un conjunto de tests que se ejecutan juntos.
- JUnit Platform Suite: Una anotación que permite definir y ejecutar una suite de tests en JUnit 5.
- Selectores de Clases y Paquetes: Herramientas para especificar qué tests incluir en la suite.
Paso a Paso: Ejecutando una Suite de Tests
- 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.
- 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
.
- 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".
- 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
.
- 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
- Crea dos clases de test,
TestClass1
yTestClass2
, cada una con al menos un método de test. - Crea una suite de tests llamada
MyTestSuite
que incluya ambas clases de test. - 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.
Curso de JUnit
Módulo 1: Introducción a JUnit
Módulo 2: Anotaciones Básicas de JUnit
- Entendiendo @Test
- Usando @Before y @After
- Usando @BeforeClass y @AfterClass
- Ignorando Tests con @Ignore
Módulo 3: Aserciones en JUnit
Módulo 4: Tests Parametrizados
- Introducción a los Tests Parametrizados
- Creando Tests Parametrizados
- Usando @ParameterizedTest
- Tests Parametrizados Personalizados
Módulo 5: Suites de Tests
Módulo 6: Mocking con JUnit
Módulo 7: Características Avanzadas de JUnit
Módulo 8: Mejores Prácticas y Consejos
- Escribiendo Tests Efectivos
- Organizando el Código de Tests
- Desarrollo Guiado por Tests (TDD)
- Integración Continua con JUnit