Introducció a les Assumptions

Les Assumptions (suposicions) a JUnit són una característica que permet condicionar l'execució d'un test basant-se en certes condicions. Si una Assumption falla, el test es marca com "skipped" (saltat) en lloc de "failed" (fallit). Això és útil quan només vols executar certs tests sota condicions específiques, com ara una configuració particular del sistema o la presència d'un recurs extern.

Tipus d'Assumptions

JUnit proporciona diverses Assumptions que es poden utilitzar per condicionar l'execució dels tests:

  • assumeTrue(boolean condition): El test només s'executa si la condició és certa.
  • assumeFalse(boolean condition): El test només s'executa si la condició és falsa.
  • assumeThat(T actual, Matcher<? super T> matcher): El test només s'executa si el valor actual compleix amb el matcher especificat.

Exemples Pràctics

Exemple 1: Utilitzant assumeTrue

import static org.junit.jupiter.api.Assumptions.assumeTrue;
import org.junit.jupiter.api.Test;

public class AssumptionsTest {

    @Test
    void testOnlyOnCiServer() {
        assumeTrue("CI".equals(System.getenv("ENV")));
        // Resta del test només s'executarà si la condició és certa
        System.out.println("Aquest test només s'executa en un servidor CI");
    }
}

Exemple 2: Utilitzant assumeFalse

import static org.junit.jupiter.api.Assumptions.assumeFalse;
import org.junit.jupiter.api.Test;

public class AssumptionsTest {

    @Test
    void testNotOnDeveloperMachine() {
        assumeFalse("DEV".equals(System.getenv("ENV")));
        // Resta del test només s'executarà si la condició és falsa
        System.out.println("Aquest test no s'executa en una màquina de desenvolupament");
    }
}

Exemple 3: Utilitzant assumeThat

import static org.junit.jupiter.api.Assumptions.assumeThat;
import static org.hamcrest.CoreMatchers.is;
import org.junit.jupiter.api.Test;

public class AssumptionsTest {

    @Test
    void testOnlyOnSpecificJavaVersion() {
        assumeThat(System.getProperty("java.version"), is("11"));
        // Resta del test només s'executarà si la versió de Java és 11
        System.out.println("Aquest test només s'executa amb Java 11");
    }
}

Exercicis Pràctics

Exercici 1: Condicionar un Test Basat en una Variable d'Entorn

Descripció: Escriu un test que només s'executi si la variable d'entorn TEST_ENV està establerta a true.

Solució:

import static org.junit.jupiter.api.Assumptions.assumeTrue;
import org.junit.jupiter.api.Test;

public class AssumptionsExercise {

    @Test
    void testOnlyIfTestEnvIsTrue() {
        assumeTrue("true".equals(System.getenv("TEST_ENV")));
        // Resta del test només s'executarà si TEST_ENV és true
        System.out.println("Aquest test només s'executa si TEST_ENV és true");
    }
}

Exercici 2: Condicionar un Test Basat en la Presència d'un Fitxer

Descripció: Escriu un test que només s'executi si el fitxer config.properties existeix en el directori de treball actual.

Solució:

import static org.junit.jupiter.api.Assumptions.assumeTrue;
import org.junit.jupiter.api.Test;
import java.io.File;

public class AssumptionsExercise {

    @Test
    void testOnlyIfConfigFileExists() {
        File configFile = new File("config.properties");
        assumeTrue(configFile.exists());
        // Resta del test només s'executarà si config.properties existeix
        System.out.println("Aquest test només s'executa si config.properties existeix");
    }
}

Errors Comuns i Consells

  • Error Comú: No establir correctament les variables d'entorn o les condicions necessàries per a les Assumptions.

    • Consell: Assegura't de configurar correctament les variables d'entorn o altres condicions abans d'executar els tests.
  • Error Comú: Utilitzar Assumptions per condicions que haurien de ser part de la lògica del test.

    • Consell: Utilitza Assumptions només per condicions externes que no formen part de la lògica del test en si.

Conclusió

Les Assumptions a JUnit són una eina poderosa per condicionar l'execució dels tests basant-se en condicions externes. Això permet escriure tests més flexibles i adaptables a diferents entorns i configuracions. Amb els exemples i exercicis proporcionats, hauríeu de ser capaços d'incorporar Assumptions en els vostres tests de manera efectiva.

© Copyright 2024. Tots els drets reservats