Test Maven con JUnit 5
Breve descripción de JUnit 5[editar]
La principal característica de JUnit 5 frente a JUnit 4 es que se ha dividido en módulos. Una base para correr los test y luego implementaciones concretas. Hay dos principalmente
- junit-jupiter-engine: Es para la creación de nuevos test usando JUnit 5
- junit-vintage-engine: Nos permite correr antiguos test de JUnit 4 usando JUnit 5, sin necesidad de modificarlos.
Ambas son compatibles, de decir, podríamos poner ambas como dependencias de test en nuestro proyecto Maven y podríamos escribir tests tanto con la sintaxis de JUnit 4 como conla sintaxis de JUnit 5. Esto es útil para antiguos proyectos en los que tengamos test en JUnit 4 que queramos ir migrando poco a poco a JUnit 5.
Dependencias Maven para JUnit 5[editar]
Las dependencias, según queramos una u otra, o ambas a la vez, serían
<project>
...
<dependencies>
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<version>5.10.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.10.1</version>
<scope>test</scope>
</dependency>
...
</dependencies>
...
</project>
Ejemplo de test JUnit 5 con Maven[editar]
En maven-junit5-example tienes el ejemplo completo. En ese proyecto Maven se utilizan ambas junit engine simultáneamente. CalculatorJupiterTest
usa la nueva sintaxis de JUnit 5 mientras que CalculatorVintageTest
utiliza la antigua.
Ponemos aquí el código de ambas. Fíjate que cambia ligeramente la sintaxis de las anotaciones y de los Assert. Fíjate sobre todo en los import.
package com.chuidiang.examples;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
/**
* @author Chuidiang
* @date 11/11/2023
*/
public class CalculatorJupiterTest
{
private Calculator calculator;
@BeforeEach
public void init(){
calculator = new Calculator();
}
@Test
public void shouldAdd()
{
Assertions.assertEquals(4, calculator.add(2,2), "Should Add Numbers" );
}
@Test
public void shouldSubstract()
{
Assertions.assertEquals(0, calculator.substract(2,2), "Should Substract Numbers" );
}
@Test
public void shouldMultiply()
{
Assertions.assertEquals(4, calculator.multiply(2,2), "Should Multiply Numbers" );
}
@Test
public void shouldDivide()
{
Assertions.assertEquals(1, calculator.divide(2,2), "Should Divide Numbers" );
}
}
package com.chuidiang.examples;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
/**
* @author Chuidiang
* @date 11/11/2023
*/
public class CalculatorVintageTest
{
private Calculator calculator;
@Before
public void init(){
calculator = new Calculator();
}
@Test
public void shouldAdd()
{
Assert.assertEquals("Should Add Numbers", 4, calculator.add(2,2) );
}
@Test
public void shouldSubstract()
{
Assert.assertEquals("Should Substract Numbers", 0, calculator.substract(2,2) );
}
@Test
public void shouldMultiply()
{
Assert.assertEquals("Should Multiply Numbers", 4, calculator.multiply(2,2) );
}
@Test
public void shouldDivide()
{
Assert.assertEquals("Should Divide Numbers", 1, calculator.divide(2,2) );
}
}
Puedes ver más detalles cómo usar JUnit en Maven