En el mundo de las pruebas unitarias en Java, AssertJ se ha consolidado como una de las herramientas más poderosas y expresivas para realizar aserciones. Este framework proporciona una API fluida y altamente legible que facilita la validación de resultados en las pruebas, mejorando la mantenibilidad y claridad del código.
AssertJ es una librería de aserciones para Java con una API expresiva y encadenable. Entre sus principales características se encuentran:
- Sintaxis fluida y encadenada.
- Mejor manejo de colecciones y excepciones.
- Comparaciones avanzadas con objetos y fechas.
- Integración con JUnit y TestNG.
Para utilizar AssertJ en un proyecto Maven, agrega la siguiente dependencia:
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.24.2</version>
<scope>test</scope>
</dependency>
Si usas Gradle:
testImplementation 'org.assertj:assertj-core:3.24.2'
Veamos un ejemplo de cómo realizar aserciones básicas con AssertJ:
import static org.assertj.core.api.Assertions.*;
import org.junit.jupiter.api.Test;
class AssertJExampleTest {
@Test
void testBasicAssertions() {
String mensaje = "Hola AssertJ";
assertThat(mensaje)
.isNotNull()
.startsWith("Hola")
.endsWith("AssertJ")
.contains("AssertJ");
}
}
Otro ejemplo:
@Test
void testNumbers() {
int resultado = 10;
assertThat(resultado)
.isPositive()
.isGreaterThan(5)
.isLessThanOrEqualTo(10);
}
@Test
void testListAssertions() {
List<String> nombres = List.of("Juan", "Maria", "Carlos");
assertThat(nombres)
.hasSize(3)
.contains("Maria")
.doesNotContain("Pedro")
.containsExactly("Juan", "Maria", "Carlos");
}
Veamos Aserciones con Excepciones:
@Test
void testException() {
assertThatThrownBy(() -> {
throw new IllegalArgumentException("Error de prueba");
}).isInstanceOf(IllegalArgumentException.class)
.hasMessageContaining("Error");
}
AssertJ es una excelente opción para mejorar las pruebas unitarias en Java, ofreciendo una API intuitiva y potente que facilita la validación de resultados. Su uso ayuda a escribir pruebas más claras y mantenibles, mejorando la calidad del código.