AYUDA .NET

Junit Java (Cómo funciona para los desarrolladores)

Publicado en 29 de septiembre, 2024
Compartir:

El framework JUnit es un marco de pruebas unitarias ampliamente utilizado para aplicaciones Java. Ofrece una forma simple y elegante de escribir y ejecutar pruebas repetibles. Con JUnit Java, los desarrolladores pueden asegurar que su código se comporte como se espera al escribir pruebas unitarias que verifiquen diferentes aspectos de su software. Además, los desarrolladores también pueden escribir clases de prueba para organizar casos de prueba y utilizar ejecutores de prueba para ejecutar pruebas y obtener retroalimentación. Los marcos de pruebas unitarias en conjunto no solo ayudan a identificar errores, sino que también promueven un mejor diseño y mantenibilidad.

En este artículo, discutiremos la ejecución de pruebas de JUnit Java y veremos diferentes técnicas para hacerlo. También escribiremos un caso de prueba para la creación de PDF utilizando IronPDF para Java.

Historia y evolución de JUnit

El framework de pruebas JUnit fue creado por Kent Beck y Erich Gamma, dos de las figuras líderes en la comunidad de desarrollo de software. Desde su creación a finales de la década de 1990, JUnit ha experimentado varias iteraciones, cada una agregando más funcionalidad y mejorando la facilidad de uso. La versión estable actual, JUnit 5, también conocida como JUnit Jupiter, introduce varias mejoras con respecto a sus predecesores, haciéndola más robusta y flexible.

Características clave de JUnit

  1. Anotaciones: JUnit utiliza anotaciones para definir y configurar pruebas. Las anotaciones comunes incluyen:

    • @Test: Marca un método como un método de prueba.

    • @BeforeEach: Se ejecuta antes de cada prueba.

    • @AfterEach: Se ejecuta después de cada prueba.

    • @BeforeAll: Se ejecuta una vez antes de todas las pruebas.
    • @AfterAll: Se ejecuta una vez después de todas las pruebas.
  2. Aserciones: Las aserciones se utilizan para verificar si los resultados de la prueba coinciden con los resultados esperados. Algunas afirmaciones comunes incluyen:

    • assertEquals(esperado, actual): Comprueba si dos valores son iguales.

    • assertTrue(condición): Verifica si una condición es verdadera.

    • assertFalse(condición): Comprueba si una condición es falsa.

    • assertNull(objeto): Comprueba si un objeto es nulo.

      • assertNotNull(objeto): Verifica si un objeto no es nulo.
  1. Pruebas parametrizadas: JUnit admite pruebas parametrizadas, lo que permite que la misma prueba se ejecute con diferentes parámetros, ejecutando pruebas con mayor eficiencia.

  2. Conjuntos de pruebas: Las pruebas se pueden agrupar en conjuntos de pruebas para ejecutar múltiples pruebas juntas.

  3. Pruebas de Excepción: JUnit puede verificar si un método lanza las excepciones esperadas.

  4. Integración con herramientas de compilación: JUnit se integra perfectamente con herramientas de compilación ampliamente utilizadas como Maven. Esto permite ejecutar pruebas y probar código automáticamente durante el proceso de compilación e informar a los desarrolladores si alguna prueba falla durante el proceso de compilación.

    JUnit Java (Cómo funciona para desarrolladores): Figura 1 - Prueba unitaria con JUnit

Integración con herramientas de construcción

JUnit se integra perfectamente con herramientas de construcción ampliamente utilizadas como Maven. Esto te permite ejecutar pruebas automáticamente durante el proceso de construcción.

Para utilizar JUnit con Maven, agrega la siguiente dependencia a tu archivo pom.xml:

<dependencies>
    <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>
</dependencies>
<dependencies>
    <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>
</dependencies>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<dependencies> <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> </dependencies>
VB   C#

Escribiendo tu primera prueba JUnit

Antes de sumergirnos en ejemplos más complejos, comencemos con un caso de prueba unitaria simple. Escribiremos una prueba para una clase de calculadora básica.

Clase Calculator

// Calculator.java
public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
    public int subtract(int a, int b) {
        return a - b;
    }
}
// Calculator.java
public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
    public int subtract(int a, int b) {
        return a - b;
    }
}
' Calculator.java
Public Class Calculator
	Public Function add(ByVal a As Integer, ByVal b As Integer) As Integer
		Return a + b
	End Function
	Public Function subtract(ByVal a As Integer, ByVal b As Integer) As Integer
		Return a - b
	End Function
End Class
VB   C#

Clase de Prueba Unitaria

// CalculatorTest.java
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class CalculatorTest {
    @Test
    public void testAdd() {
        Calculator calculator = new Calculator();
        assertEquals(5, calculator.add(2, 3));
    }
    @Test
    public void testSubtract() {
        Calculator calculator = new Calculator();
        assertEquals(1, calculator.subtract(3, 2));
    }
}
// CalculatorTest.java
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class CalculatorTest {
    @Test
    public void testAdd() {
        Calculator calculator = new Calculator();
        assertEquals(5, calculator.add(2, 3));
    }
    @Test
    public void testSubtract() {
        Calculator calculator = new Calculator();
        assertEquals(1, calculator.subtract(3, 2));
    }
}
' CalculatorTest.java
Private org As import
Private Shared As import
Public Class CalculatorTest
	Test Public Sub testAdd()
		Dim calculator As New Calculator()
		assertEquals(5, calculator.add(2, 3))
	End Sub
	Test Public Sub testSubtract()
		Dim calculator As New Calculator()
		assertEquals(1, calculator.subtract(3, 2))
	End Sub
End Class
VB   C#

El ejemplo CalculatorTest contiene dos métodos de prueba, uno para probar la suma: testAdd y otro para probar la resta: testSubtract. Cada método crea una instancia de la clase Calculator y utiliza afirmaciones para verificar la corrección de los métodos de suma y resta.

Salida

Junit Java (Cómo funciona para desarrolladores): Figura 2 - Salida de la ejecución de pruebas Junit

Funciones avanzadas de JUnit

Pruebas Parametrizadas

Las pruebas parametrizadas te permiten ejecutar la misma prueba con diferentes conjuntos de parámetros. Esto es útil para probar métodos con una amplia gama de entradas.

import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import static org.junit.jupiter.api.Assertions.*;
public class CalculatorParameterizedTest {
    @ParameterizedTest
    @CsvSource({
        "1, 1, 2",
        "2, 3, 5",
        "10, 20, 30"
    })
    public void testAdd(int a, int b, int expected) {
        Calculator calculator = new Calculator();
        assertEquals(expected, calculator.add(a, b));
    }
}
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import static org.junit.jupiter.api.Assertions.*;
public class CalculatorParameterizedTest {
    @ParameterizedTest
    @CsvSource({
        "1, 1, 2",
        "2, 3, 5",
        "10, 20, 30"
    })
    public void testAdd(int a, int b, int expected) {
        Calculator calculator = new Calculator();
        assertEquals(expected, calculator.add(a, b));
    }
}
Private org As import
Private org As import
Private Shared As import
Public Class CalculatorParameterizedTest
	ParameterizedTest CsvSource({ "1, 1, 2", "2, 3, 5", "10, 20, 30" }) Public Sub testAdd(ByVal a As Integer, ByVal b As Integer, ByVal expected As Integer)
		Dim calculator As New Calculator()
		assertEquals(expected, calculator.add(a, b))
	End Sub
End Class
VB   C#

En este ejemplo, el método testAdd se ejecuta tres veces con diferentes conjuntos de entradas, según lo especificado por el CsvSource.

Pruebas de Excepción

A veces, necesitas verificar que un método lance una excepción esperada.

Agrega el siguiente método a tu clase de calculadora.

public float divide(int a, int b) {
        return a / b;
    }
public float divide(int a, int b) {
        return a / b;
    }
Public Function divide(ByVal a As Integer, ByVal b As Integer) As Single
		Return a \ b
End Function
VB   C#

Clase de Prueba:

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class CalculatorExceptionTest {
    @Test
    public void testDivisionByZero() {
        Calculator calculator = new Calculator();
        assertThrows(ArithmeticException.class, () -> calculator.divide(1, 0));
    }
}
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class CalculatorExceptionTest {
    @Test
    public void testDivisionByZero() {
        Calculator calculator = new Calculator();
        assertThrows(ArithmeticException.class, () -> calculator.divide(1, 0));
    }
}
Private org As import
Private Shared As import
Friend Class CalculatorExceptionTest
	Test Public Sub testDivisionByZero()
		Dim calculator As New Calculator()
		assertThrows(ArithmeticException.class, () -> calculator.divide(1, 0))
	End Sub
End Class
VB   C#

Salida

Junit Java (Cómo funciona para desarrolladores): Figura 3 - Salida de ejecutar pruebas Junit

Integración de IronPDF con JUnit en Java

IronPDF es una potente biblioteca para generar documentos PDF en aplicaciones Java. Integrar IronPDF con JUnit te permite automatizar la prueba de la funcionalidad de generación de PDF, asegurando que tus documentos se creen con precisión y cumplan con las especificaciones deseadas.

Junit Java (Cómo funciona para desarrolladores): Figura 4 - Página principal de IronPDF: La biblioteca Java PDF

Para integrar IronPDF con JUnit, primero debes incluir la biblioteca de IronPDF en las dependencias de tu proyecto.

<dependencies>
<!--Adds IronPDF Java. Use the latest version in the version tag.-->
    <dependency>
        <groupId>com.ironsoftware</groupId>
        <artifactId>ironpdf</artifactId>
        <version>20xx.xx.xxxx</version>
    </dependency>
<!--Adds the slf4j logger which IronPDF Java uses.-->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>2.0.3</version>
    </dependency>
</dependencies>
<dependencies>
<!--Adds IronPDF Java. Use the latest version in the version tag.-->
    <dependency>
        <groupId>com.ironsoftware</groupId>
        <artifactId>ironpdf</artifactId>
        <version>20xx.xx.xxxx</version>
    </dependency>
<!--Adds the slf4j logger which IronPDF Java uses.-->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>2.0.3</version>
    </dependency>
</dependencies>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<dependencies> <!--Adds IronPDF Java.Use the latest version in the version tag.-- > <dependency> <groupId> com.ironsoftware</groupId> <artifactId> ironpdf</artifactId> <version>20xx.xx.xxxx</version> </dependency> <!--Adds the slf4j logger which IronPDF Java uses.-- > <dependency> <groupId> org.slf4j</groupId> <artifactId> slf4j-simple</artifactId> <version>2.0.3</version> </dependency> </dependencies>
VB   C#

Una vez hecho esto, puedes escribir casos de prueba para validar la lógica de generación de PDF usando las API de IronPDF. Aquí tienes un ejemplo de cómo puedes usar JUnit para probar la generación de PDF con IronPDF:

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
import com.ironsoftware.ironpdf.*;
import java.io.File;
import java.io.IOException;
class PdfGenerationTest {
    @Test
    public void testPdfGeneration() throws IOException {
        // Define HTML content
        String htmlContent = "<html><body><h1>Hello, IronPDF!</h1></body></html>";
        // Convert HTML to PDF
        PdfDocument pdfDocument = PdfDocument.renderHtmlAsPdf(htmlContent);
        // Save PDF to file
        pdfDocument.saveAs("output.pdf");
        // Assert PDF generation
        assertTrue(new File("output.pdf").exists());
    }
}
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
import com.ironsoftware.ironpdf.*;
import java.io.File;
import java.io.IOException;
class PdfGenerationTest {
    @Test
    public void testPdfGeneration() throws IOException {
        // Define HTML content
        String htmlContent = "<html><body><h1>Hello, IronPDF!</h1></body></html>";
        // Convert HTML to PDF
        PdfDocument pdfDocument = PdfDocument.renderHtmlAsPdf(htmlContent);
        // Save PDF to file
        pdfDocument.saveAs("output.pdf");
        // Assert PDF generation
        assertTrue(new File("output.pdf").exists());
    }
}
Private org As import
Private Shared As import
Private com As import
Private java As import
Private java As import
Friend Class PdfGenerationTest
	Test Public Sub testPdfGeneration()
		' Define HTML content
		Dim htmlContent As String = "<html><body><h1>Hello, IronPDF!</h1></body></html>"
		' Convert HTML to PDF
		Dim pdfDocument As PdfDocument = PdfDocument.renderHtmlAsPdf(htmlContent)
		' Save PDF to file
		pdfDocument.saveAs("output.pdf")
		' Assert PDF generation
		assertTrue((New File("output.pdf")).exists())
	End Sub
End Class
VB   C#

En este ejemplo, creamos un caso de prueba testPdfGeneration() que usa IronPDF para convertir contenido HTML en un documento PDF. La prueba verifica que el archivo PDF se haya generado correctamente comprobando su existencia en el sistema de archivos.

Junit Java (Cómo funciona para desarrolladores): Figura 5 - Salida de la consola al ejecutar la prueba Junit anterior, comprobando la creación exitosa de PDFs

Conclusión

JUnit es un marco de pruebas versátil para Java que simplifica el proceso de escribir y ejecutar pruebas automatizadas. Al aprovechar sus características, como las pruebas parametrizadas, el manejo de excepciones y las anotaciones, los desarrolladores pueden garantizar la fiabilidad y la robustez de su base de código.

Integración de IronPDF con JUnit permite pruebas exhaustivas de la funcionalidad de generación de PDF dentro de aplicaciones Java, asegurando que los documentos generados cumplan con los estándares de calidad y se adhieran a las especificaciones. Al combinar el poder de JUnit e IronPDF, los desarrolladores pueden optimizar el proceso de pruebas y entregar software de alta calidad con confianza.

Para saber más sobre cómo renderizar una cadena HTML como PDF, visita lo siguiente enlace.

< ANTERIOR
Socket io .NET (Cómo funciona para desarrolladores)
SIGUIENTE >
Microsoft.Extensions.DependencyInjection .NET 6 (Trabajar con PDF)

¿Listo para empezar? Versión: 2024.10 acaba de salir

Descarga gratuita de NuGet Descargas totales: 11,108,738 Ver licencias >