Matchers comunes en AssertJ
⏱ Dedicación recomendada: 0 minutos
Esto considera el contenido visible y relevante, e ignora texto colapsado o marcado como opcional.
r8vnhill/
AssertJ es una biblioteca de aserciones para Java que se destaca por su API fluida, expresiva y extensible. Aunque Kotest y AssertJ comparten varias similitudes en su enfoque de las pruebas, también presentan diferencias clave en cuanto a sintaxis, capacidades y flexibilidad. En esta sección compararemos los matchers comunes en Kotest con los de AssertJ para que puedas apreciar las similitudes y diferencias entre ambas bibliotecas.
Matchers Comunes en AssertJ
AssertJ se basa en una API fluida y en métodos encadenados que hacen que las pruebas sean más legibles y expresivas, de manera similar a Kotest. Aquí algunos ejemplos de matchers comunes en AssertJ:
- Igualdad: Verifica si un valor es igual a otro.
assertThat(result).isEqualTo(42);
- Desigualdad: Verifica que dos valores no sean iguales.
assertThat(result).isNotEqualTo(0);
- No Nulo: Asegura que un valor no es nulo.
assertThat(result).isNotNull();
- Contenido en Cadenas: Verifica que una cadena contiene otra.
assertThat(string).contains("world");
- Empieza con: Verifica que una cadena comienza con un prefijo específico.
assertThat(string).startsWith("Hello");
Encadenar Matchers en AssertJ
Al igual que en Kotest, AssertJ también permite encadenar varios matchers en una sola expresión, haciendo que las pruebas sean más fluidas y legibles.
Ejemplo de encadenamiento en AssertJ:
assertThat(result)
.isNotNull()
.isGreaterThan(10)
.isLessThan(50);
En este ejemplo, se verifica que result
:
- No es nulo.
- Es mayor que 10.
- Es menor que 50.
Otro ejemplo con cadenas:
assertThat(string)
.startsWith("Hello")
.contains("world")
.endsWith("!");
Aquí, se verifica que string
:
- Comienza con "Hello".
- Contiene "world".
- Termina con "!".
Comparación final
Característica | Kotest | AssertJ |
---|---|---|
Sintaxis | Fluida, basada en shouldBe y shouldNotBe . | Fluida, basada en assertThat() . |
Igualdad y Desigualdad | result shouldBe 42 / result shouldNotBe 0 | assertThat(result).isEqualTo(42) / isNotEqualTo(0) |
Verificación de Null | result.shouldNotBeNull() | assertThat(result).isNotNull() |
Composición de Matchers | Soporte nativo para encadenar verificaciones. | Soporte nativo para encadenar verificaciones. |
Legibilidad y Claridad | Muy legible con sintaxis concisa y expresiva. | Muy legible con una sintaxis ligeramente más detallada. |
Flexibilidad | Soporte para múltiples estilos de pruebas (BDD, DDT). | API extensible y compatible con frameworks populares. |
¿Qué aprendimos?
En esta sección, hemos explorado los matchers comunes en AssertJ y los comparamos con los de Kotest, dos bibliotecas populares para realizar aserciones en pruebas de software. Ambos ofrecen una API fluida y legible, lo que facilita escribir pruebas claras y expresivas. Sin embargo, hay algunas diferencias clave en su sintaxis y en el enfoque que adoptan para las verificaciones.
Puntos clave
- AssertJ se caracteriza por una API fluida basada en el método
assertThat()
, que permite realizar verificaciones como igualdad, desigualdad, nulidad, y contenido en cadenas de manera encadenada. - Kotest, por otro lado, ofrece una sintaxis más concisa basada en
shouldBe
yshouldNotBe
, lo que hace que las pruebas sean igualmente expresivas pero con un enfoque ligeramente más directo. - Ambos frameworks permiten encadenar verificaciones para hacer pruebas más claras y evitar la repetición innecesaria de código, mejorando la legibilidad y mantenibilidad del código de prueba.
Ambos frameworks son opciones sólidas para la creación de pruebas robustas, y la decisión entre ellos puede depender del estilo de codificación y la flexibilidad que necesites en tu entorno de desarrollo.
Bibliografías Recomendadas
- 🌐 "AssertJ - fluent assertions java library." Accedido: 4 de octubre de 2024. [En línea]. Disponible en: https://assertj.github.io/doc/