En aquest tema, aprendrem com crear suites de test a JUnit. Les suites de test ens permeten agrupar múltiples tests i executar-los junts, facilitant la gestió i l'execució de grans conjunts de tests. Això és especialment útil en projectes grans on és necessari executar un conjunt específic de tests de manera regular.
- Què és una Suite de Test?
Una suite de test és una col·lecció de tests que es poden executar junts. Això permet:
- Agrupar tests relacionats.
- Executar un conjunt de tests amb una sola comanda.
- Organitzar millor els tests en projectes grans.
- Configuració d'una Suite de Test a JUnit
2.1. Dependències Necessàries
Assegura't de tenir les dependències de JUnit al teu projecte. Si estàs utilitzant Maven, afegeix les següents dependències al teu pom.xml
:
<dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>5.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>5.8.1</version> <scope>test</scope> </dependency>
2.2. Creant una Suite de Test
Per crear una suite de test a JUnit 5, utilitzarem les anotacions @Suite
i @SelectClasses
. Aquí tens un exemple pràctic:
Exemple de Suite de Test
import org.junit.platform.suite.api.SelectClasses; import org.junit.platform.suite.api.Suite; @Suite @SelectClasses({ TestClass1.class, TestClass2.class, TestClass3.class }) public class MyTestSuite { // Aquesta classe no necessita tenir cap codi. }
En aquest exemple:
@Suite
indica que aquesta classe és una suite de test.@SelectClasses
especifica les classes de test que formen part de la suite.
2.3. Executant la Suite de Test
Per executar la suite de test, simplement executa la classe MyTestSuite
com ho faries amb qualsevol altra classe de test a JUnit. La suite executarà tots els tests definits a TestClass1
, TestClass2
i TestClass3
.
- Agrupant Tests amb Etiquetes
A més de seleccionar classes específiques, també pots agrupar tests utilitzant etiquetes (tags
). Això és útil quan vols agrupar tests per categories, com ara "unit tests", "integration tests", etc.
3.1. Etiquetant Tests
Primer, etiqueta els teus tests utilitzant l'anotació @Tag
:
import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; public class TaggedTests { @Test @Tag("unit") void unitTest1() { // codi del test } @Test @Tag("integration") void integrationTest1() { // codi del test } }
3.2. Creant una Suite de Test amb Etiquetes
Després, crea una suite de test que seleccioni tests basats en etiquetes:
import org.junit.platform.suite.api.IncludeTags; import org.junit.platform.suite.api.Suite; @Suite @IncludeTags("unit") public class UnitTestSuite { // Aquesta classe no necessita tenir cap codi. }
En aquest exemple, UnitTestSuite
executarà tots els tests etiquetats amb @Tag("unit")
.
- Exercici Pràctic
Exercici
- Crea dues classes de test,
CalculatorTest
iStringUtilsTest
, cadascuna amb dos tests. - Crea una suite de test que inclogui aquestes dues classes.
- Executa la suite de test i verifica que tots els tests s'executen correctament.
Solució
CalculatorTest.java
import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; public class CalculatorTest { @Test void testAddition() { assertEquals(2, 1 + 1); } @Test void testSubtraction() { assertEquals(0, 1 - 1); } }
StringUtilsTest.java
import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertTrue; public class StringUtilsTest { @Test void testIsEmpty() { assertTrue("".isEmpty()); } @Test void testIsNotEmpty() { assertTrue(!"hello".isEmpty()); } }
MyTestSuite.java
import org.junit.platform.suite.api.SelectClasses; import org.junit.platform.suite.api.Suite; @Suite @SelectClasses({ CalculatorTest.class, StringUtilsTest.class }) public class MyTestSuite { // Aquesta classe no necessita tenir cap codi. }
- Resum
En aquesta secció, hem après com crear suites de test a JUnit per agrupar i executar múltiples tests junts. Hem vist com seleccionar classes específiques i com utilitzar etiquetes per agrupar tests. Les suites de test són una eina poderosa per organitzar i gestionar els teus tests de manera eficient.
En el següent tema, explorarem com executar aquestes suites de test i com integrar-les en el teu procés de desenvolupament.
Curs de JUnit
Mòdul 1: Introducció a JUnit
Mòdul 2: Anotacions Bàsiques de JUnit
- Entenent @Test
- Utilitzant @Before i @After
- Utilitzant @BeforeClass i @AfterClass
- Ignorant Tests amb @Ignore
Mòdul 3: Assertions a JUnit
Mòdul 4: Tests Parametritzats
- Introducció als Tests Parametritzats
- Creant Tests Parametritzats
- Utilitzant @ParameterizedTest
- Tests Parametritzats Personalitzats
Mòdul 5: Suites de Test
Mòdul 6: Mocking amb JUnit
Mòdul 7: Funcions Avançades de JUnit
Mòdul 8: Millors Pràctiques i Consells
- Escrivint Tests Efectius
- Organitzant el Codi de Test
- Desenvolupament Guiat per Tests (TDD)
- Integració Contínua amb JUnit