Tenemos un conjunto de pruebas que usa principalmente aserciones JUnit con comparadores Hamcrest. Uno de nuestro equipo comenzó a experimentar con AssertJ e impresionó a la gente con su sintaxis, flexibilidad y declaratividad. Hay una característica que proporciona JUnit para la que no puedo encontrar un equivalente en AssertJ: agregar un mensaje de falla de aserción personalizado.
A menudo comparamos objetos que no están hechos para ser legibles por humanos y que tendrán ID o UUID de apariencia aleatoria y es imposible saber qué se supone que son por los datos que contienen. Esta es una situación ineludible para nuestro código base, lamentablemente, ya que parte del propósito que cumple es mapear datos entre otros servicios sin necesariamente comprender de qué se trata.
En JUnit, el assertThat
método proporciona una versión con un String reason
parámetro antes de Matcher<T>
param. Esto hace que sea trivial agregar una cadena de depuración corta que arroje algo de luz sobre el problema, como lo que debería significar la comparación para un humano.
AssertJ, por el contrario, proporciona un jillion diferentes genericizedstatic assertThat
métodos que devuelven algún tipo de interfaz de aserción o una de sus muchas clases de ejecución. Esta interfaz no proporciona una forma estándar de configurar un mensaje personalizado para que se incluya con fallas.
¿Hay alguna forma de obtener esta funcionalidad de la API de AssertJ o una de sus extensiones sin tener que crear una clase de aserción personalizada para cada tipo de aserción al que queramos agregar mensajes?
withFailMessage
importa; Me gusta AssertJ, pero esto apesta.