Skip to main content

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:

  1. No es nulo.
  2. Es mayor que 10.
  3. Es menor que 50.

Otro ejemplo con cadenas:

assertThat(string)
.startsWith("Hello")
.contains("world")
.endsWith("!");

Aquí, se verifica que string:

  1. Comienza con "Hello".
  2. Contiene "world".
  3. Termina con "!".

Comparación final

CaracterísticaKotestAssertJ
SintaxisFluida, basada en shouldBe y shouldNotBe.Fluida, basada en assertThat().
Igualdad y Desigualdadresult shouldBe 42 / result shouldNotBe 0assertThat(result).isEqualTo(42) / isNotEqualTo(0)
Verificación de Nullresult.shouldNotBeNull()assertThat(result).isNotNull()
Composición de MatchersSoporte nativo para encadenar verificaciones.Soporte nativo para encadenar verificaciones.
Legibilidad y ClaridadMuy legible con sintaxis concisa y expresiva.Muy legible con una sintaxis ligeramente más detallada.
FlexibilidadSoporte 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 y shouldNotBe, 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