Junit Assumptions

Junit: Assumptions

Las suposiciones (assumptions) se utilizan típicamente cuando no tiene sentido continuar con la ejecución de una prueba determinada; por ejemplo, si la prueba depende de algo que no existe en el entorno de ejecución actual.

Cuando una suposición es válida, el método de suposición no lanza una excepción y la ejecución de la prueba continúa con normalidad.

Cuando una suposición es inválida, el método de suposición lanza una excepción del tipo org.opentest4j.TestAbortedException para señalar que la prueba debe abortarse en lugar de marcarse como un fallo.

JUnit Jupiter incluye un subconjunto de los métodos de suposición que ofrece JUnit 4, y además añade algunos que se adaptan bien al uso con expresiones lambda de Java 8 y referencias a métodos.

Todas las suposiciones de JUnit Jupiter son métodos estáticos en la clase org.junit.jupiter.api.Assumptions.

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assumptions.assumeTrue;
import static org.junit.jupiter.api.Assumptions.assumingThat;

import example.util.Calculator;

import org.junit.jupiter.api.Test;

class AssumptionsDemo {

    private final Calculator calculator = new Calculator();

    @Test
    void testOnlyOnCiServer() {
        assumeTrue("CI".equals(System.getenv("ENV")));
        // remainder of test
    }

    @Test
    void testOnlyOnDeveloperWorkstation() {
        assumeTrue("DEV".equals(System.getenv("ENV")),
            () -> "Aborting test: not on developer workstation");
        // remainder of test
    }

    @Test
    void testInAllEnvironments() {
        assumingThat("CI".equals(System.getenv("ENV")),
            () -> {
                // perform these assertions only on the CI server
                assertEquals(2, calculator.divide(4, 2));
            });

        // perform these assertions in all environments
        assertEquals(42, calculator.multiply(6, 7));
    }

}

❕❕ It is also possible to use methods from JUnit 4’s org.junit.Assume class for assumptions. Specifically, JUnit Jupiter supports JUnit 4’s AssumptionViolatedException to signal that a test should be aborted instead of marked as a failure