AssertJ tiene isEqualToIgnoringGivenFields e isEqualToComparingFieldByFieldRecursively .
Pero no hay forma de que pueda comparar dos objetos recursivamente ignorando algunos campos. Según esta discusión, debe estar en desarrollo.
Cómo hacer que el valor de retorno de mi aserción se compare recursivamente pero ignorando algunos campos. ¿Es posible en cualquier otra biblioteca o puedo hacerlo de alguna manera usando AssertJ ?
Con las últimas 'Mejoras de API de comparación recursiva' de la versión 3.12.0 de AssertJ, ahora es posible hacer una comparación recursiva e ignorar campos:
Assertions.assertThat(objActual) .usingRecursiveComparison() .ignoringFields("uniqueId", "otherId") .ignoringFieldsMatchingRegexes(".*someId") .ignoringOverriddenEqualsForTypes(MyData.class, MyDataItem.class) .isEqualTo(objExpected);No pude hacer que ignorara algunos campos, pero logré resolverlo temporalmente al introducir un comparador para los campos que quiero ignorar y siempre los evalué como verdaderos. Esto no es fluido, sino una solución temporal para hacer el trabajo.
assertThat(object).usingComparatorForFields((x,y)->0,"field1","field2").isEqualToComparingFieldByFieldRecursively(expectedObject); Esto tiene un problema a partir del 13 de abril de 2017. No funciona cuando los campos que el comparador intenta comparar son nulos. Este es un problema cuando uno de los objetos es null , no si ambos son null .