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.

  1. 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.

  1. 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.

  1. 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").

  1. Exercici Pràctic

Exercici

  1. Crea dues classes de test, CalculatorTest i StringUtilsTest, cadascuna amb dos tests.
  2. Crea una suite de test que inclogui aquestes dues classes.
  3. 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.
}

  1. 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.

© Copyright 2024. Tots els drets reservats