Class RecursiveComparisonConfiguration
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic final class
Builder to buildRecursiveComparisonConfiguration
.Nested classes/interfaces inherited from class org.assertj.core.api.recursive.AbstractRecursiveOperationConfiguration
org.assertj.core.api.recursive.AbstractRecursiveOperationConfiguration.AbstractBuilder<BUILDER_TYPE extends org.assertj.core.api.recursive.AbstractRecursiveOperationConfiguration.AbstractBuilder<BUILDER_TYPE>>
-
Field Summary
Modifier and TypeFieldDescriptionstatic final DefaultRecursiveComparisonIntrospectionStrategy
static final String
Fields inherited from class org.assertj.core.api.recursive.AbstractRecursiveOperationConfiguration
DEFAULT_DELIMITER
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionbuilder()
Creates builder to buildRecursiveComparisonConfiguration
.Stream<Map.Entry<String,
Comparator<?>>> void
compareOnlyFields
(String... fieldNamesToCompare) Adds the given fields and their subfields to the set of fields from the object under test to compare (no other fields will be compared).void
compareOnlyFieldsOfTypes
(Class<?>... typesToCompare) Adds the given fields of types and their subfields to the set of fields from the object under test to compare (fields of other types will not be compared).protected void
describeIgnoreAllActualEmptyOptionalFields
(StringBuilder description) protected void
describeIgnoreAllActualNullFields
(StringBuilder description) boolean
Comparator<?>
getComparatorForField
(String fieldName) Comparator<?>
getComparatorForType
(Class<?> fieldType) Returns the set of fields to compare from the object under test (no other fields will be compared).Returns the set of type to compare from the object under test (fields of other types will not be compared).Returns the list fields from the object under test to ignore collection order in the recursive comparison.Returns the list of regexes used to find the object under test fields to ignore collection order in the recursive comparison.getMessageForField
(String fieldName) getMessageForType
(Class<?> fieldType) org.assertj.core.internal.TypeComparators
boolean
hasComparatorForField
(String fieldName) boolean
hasComparatorForType
(Class<?> keyType) boolean
boolean
hasCustomMessageForField
(String fieldName) boolean
hasCustomMessageForType
(Class<?> fieldType) int
hashCode()
void
Force a recursive comparison on all fields (except java types).void
ignoreCollectionOrder
(boolean ignoreCollectionOrder) Sets whether to ignore collection order in the comparison.void
ignoreCollectionOrderInFields
(String... fieldsToIgnoreCollectionOrder) Adds the given fields to the list fields from the object under test to ignore collection order in the recursive comparison.void
ignoreCollectionOrderInFieldsMatchingRegexes
(String... regexes) Adds the given regexes to the list of regexes used to find the object under test fields to ignore collection order in the recursive comparison.void
ignoreOverriddenEqualsForFields
(String... fields) Adds the given fields to the list of fields to force a recursive comparison on.void
ignoreOverriddenEqualsForFieldsMatchingRegexes
(String... regexes) Adds the given regexes to the list of regexes used find the fields to force a recursive comparison on.void
ignoreOverriddenEqualsForTypes
(Class<?>... types) Adds the given types to the list of types to force a recursive comparison on.boolean
multiLineDescription
(Representation representation) void
registerComparatorForFields
(Comparator<?> comparator, String... fieldLocations) Registers the givenComparator
to compare the fields at the given locations.<T> void
registerComparatorForType
(Comparator<? super T> comparator, Class<T> type) Registers the givenComparator
to compare the fields with the given type.void
registerEqualsForFields
(BiPredicate<?, ?> equals, String... fieldLocations) Registers the givenBiPredicate
to compare the fields at the given locations.void
registerEqualsForFieldsMatchingRegexes
(BiPredicate<?, ?> equals, String... regexes) Allows to register aBiPredicate
to compare fields whose location matches the given regexes.<T> void
registerEqualsForType
(BiPredicate<? super T, ? super T> equals, Class<T> type) Registers the givenBiPredicate
to compare the fields with the given type.void
registerErrorMessageForFields
(String message, String... fieldLocations) Registers the giving message which would be shown when differences in the given fields while comparison occurred.void
registerErrorMessageForType
(String message, Class<?> clazz) Registers the giving message which would be shown when differences for the giving type while comparison occurred.void
setIgnoreAllActualEmptyOptionalFields
(boolean ignoringAllActualEmptyOptionalFields) Sets whether actual empty optional fields are ignored in the recursive comparison.void
setIgnoreAllActualNullFields
(boolean ignoreAllActualNullFields) Sets whether actual null fields are ignored in the recursive comparison.void
setIgnoreAllExpectedNullFields
(boolean ignoreAllExpectedNullFields) Sets whether expected null fields are ignored in the recursive comparison.void
setIntrospectionStrategy
(RecursiveComparisonIntrospectionStrategy introspectionStrategy) Defines how objects are introspected in the recursive comparison.void
strictTypeChecking
(boolean strictTypeChecking) Sets whether the recursive comparison will check that actual's type is compatible with expected's type (the same applies for each field).toString()
void
Force a recursive comparison on all fields (except java types).Methods inherited from class org.assertj.core.api.recursive.AbstractRecursiveOperationConfiguration
asWrapperIfPrimitiveType, describeIgnoredFields, describeIgnoredFieldsRegexes, describeIgnoredTypes, describeRegexes, getIgnoredFields, getIgnoredFieldsRegexes, getIgnoredTypes, ignoreFields, ignoreFieldsMatchingRegexes, ignoreFieldsOfTypes, join, matchesAnIgnoredField, matchesAnIgnoredFieldRegex
-
Field Details
-
INDENT_LEVEL_2
- See Also:
-
DEFAULT_RECURSIVE_COMPARISON_INTROSPECTION_STRATEGY
public static final DefaultRecursiveComparisonIntrospectionStrategy DEFAULT_RECURSIVE_COMPARISON_INTROSPECTION_STRATEGY
-
-
Constructor Details
-
RecursiveComparisonConfiguration
public RecursiveComparisonConfiguration()
-
-
Method Details
-
hasComparatorForField
-
getComparatorForField
-
hasCustomMessageForField
-
getMessageForField
-
getFieldComparators
-
hasComparatorForType
-
hasCustomComparators
public boolean hasCustomComparators() -
getComparatorForType
-
hasCustomMessageForType
-
getMessageForType
-
getTypeComparators
public org.assertj.core.internal.TypeComparators getTypeComparators() -
setIgnoreAllActualEmptyOptionalFields
public void setIgnoreAllActualEmptyOptionalFields(boolean ignoringAllActualEmptyOptionalFields) Sets whether actual empty optional fields are ignored in the recursive comparison.See
RecursiveComparisonAssert.ignoringActualNullFields()
for code examples.- Parameters:
ignoringAllActualEmptyOptionalFields
- whether to ignore actual empty optional fields in the recursive comparison
-
setIgnoreAllActualNullFields
public void setIgnoreAllActualNullFields(boolean ignoreAllActualNullFields) Sets whether actual null fields are ignored in the recursive comparison.See
RecursiveComparisonAssert.ignoringActualNullFields()
for code examples.- Parameters:
ignoreAllActualNullFields
- whether to ignore actual null fields in the recursive comparison
-
setIgnoreAllExpectedNullFields
public void setIgnoreAllExpectedNullFields(boolean ignoreAllExpectedNullFields) Sets whether expected null fields are ignored in the recursive comparison.See
RecursiveComparisonAssert.ignoringExpectedNullFields()
for code examples.- Parameters:
ignoreAllExpectedNullFields
- whether to ignore expected null fields in the recursive comparison
-
compareOnlyFields
Adds the given fields and their subfields to the set of fields from the object under test to compare (no other fields will be compared).The fields are specified by name, not by value, you can specify
person.name
but not"Jack"
as"Jack"
is not a field value.Specifying a field will make all its subfields to be compared, for example specifying
person
will lead to compareperson.name
,person.address
... on the other hand if you specifyperson.name
,person
won't be compared butperson.name
will be.See
RecursiveComparisonAssert#comparingOnlyFields(String...)
for examples.- Parameters:
fieldNamesToCompare
- the fields of the object under test to compare in the comparison.
-
compareOnlyFieldsOfTypes
Adds the given fields of types and their subfields to the set of fields from the object under test to compare (fields of other types will not be compared).Specifying a field of type will make all its subfields to be compared, for example specifying
Person
will lead to comparePerson.name
,Person.address
...See
RecursiveComparisonAssert#comparingOnlyFieldsOfTypes(Class...)
for examples.- Parameters:
typesToCompare
- the types to compare in the recursive comparison.
-
getComparedFields
Returns the set of fields to compare from the object under test (no other fields will be compared).- Returns:
- the set of fields from the object under test to compare.
-
getComparedTypes
Returns the set of type to compare from the object under test (fields of other types will not be compared).- Returns:
- the set of types from the object under test to compare.
-
ignoreAllOverriddenEquals
public void ignoreAllOverriddenEquals()Force a recursive comparison on all fields (except java types).See
RecursiveComparisonAssert.ignoringAllOverriddenEquals()
for examples. -
useOverriddenEquals
public void useOverriddenEquals()Force a recursive comparison on all fields (except java types).See
RecursiveComparisonAssert.usingOverriddenEquals()
for examples. -
ignoreOverriddenEqualsForFields
Adds the given fields to the list of fields to force a recursive comparison on.See
RecursiveComparisonAssert#ignoringOverriddenEqualsForFields(String...)
for examples.- Parameters:
fields
- the fields to force a recursive comparison on.
-
ignoreOverriddenEqualsForFieldsMatchingRegexes
Adds the given regexes to the list of regexes used find the fields to force a recursive comparison on.See
RecursiveComparisonAssert#ignoringOverriddenEqualsForFieldsMatchingRegexes(String...)
for examples.- Parameters:
regexes
- regexes used to specify the fields we want to force a recursive comparison on.
-
ignoreOverriddenEqualsForTypes
Adds the given types to the list of types to force a recursive comparison on.See
RecursiveComparisonAssert#ignoringOverriddenEqualsForTypes(Class...)
for examples.- Parameters:
types
- the types to the list of types to force a recursive comparison on.
-
ignoreCollectionOrder
public void ignoreCollectionOrder(boolean ignoreCollectionOrder) Sets whether to ignore collection order in the comparison.See
RecursiveComparisonAssert.ignoringCollectionOrder()
for code examples.- Parameters:
ignoreCollectionOrder
- whether to ignore collection order in the comparison.
-
ignoreCollectionOrderInFields
Adds the given fields to the list fields from the object under test to ignore collection order in the recursive comparison.See
RecursiveComparisonAssert#ignoringCollectionOrderInFields(String...)
for examples.- Parameters:
fieldsToIgnoreCollectionOrder
- the fields of the object under test to ignore collection order in the comparison.
-
getIgnoredCollectionOrderInFields
Returns the list fields from the object under test to ignore collection order in the recursive comparison.- Returns:
- the list fields from the object under test to ignore collection order in the recursive comparison.
-
ignoreCollectionOrderInFieldsMatchingRegexes
Adds the given regexes to the list of regexes used to find the object under test fields to ignore collection order in the recursive comparison.See
RecursiveComparisonAssert#ignoringCollectionOrderInFieldsMatchingRegexes(String...)
for examples.- Parameters:
regexes
- regexes used to find the object under test fields to ignore collection order in the comparison.
-
getIgnoredCollectionOrderInFieldsMatchingRegexes
Returns the list of regexes used to find the object under test fields to ignore collection order in the recursive comparison.- Returns:
- the list of regexes used to find the object under test fields to ignore collection order in the recursive comparison.
-
registerComparatorForType
Registers the givenComparator
to compare the fields with the given type.Comparators registered with this method have less precedence than comparators registered with
registerComparatorForFields(Comparator, String...)
.Note that registering a
Comparator
for a given type will override the previously registered BiPredicate/Comparator (if any).See
RecursiveComparisonAssert.withComparatorForType(Comparator, Class)
for examples.- Type Parameters:
T
- the class type to register a comparator for- Parameters:
comparator
- theComparator
to use to compare the given typetype
- the type to be compared with the given comparator.- Throws:
NullPointerException
- if the given comparator is null.
-
registerEqualsForType
Registers the givenBiPredicate
to compare the fields with the given type.BiPredicates specified with this method have less precedence than the ones registered with
registerEqualsForFields(BiPredicate, String...)
or comparators registered withregisterComparatorForFields(Comparator, String...)
.Note that registering a
BiPredicate
for a given type will override the previously registered BiPredicate/Comparator (if any).See
RecursiveComparisonAssert.withEqualsForType(BiPredicate, Class)
for examples.- Type Parameters:
T
- the class type to register a comparator for- Parameters:
equals
- the equals implementation to compare the given typetype
- the type to be compared with the given equals implementation .- Throws:
NullPointerException
- if the given BiPredicate is null.- Since:
- 3.17.0
-
registerComparatorForFields
Registers the givenComparator
to compare the fields at the given locations.The fields must be specified from the root object, for example if
Foo
has aBar
field and both have anid
field, one can register a comparator for Foo and Bar'sid
by calling:registerComparatorForFields(idComparator, "foo.id", "foo.bar.id")
Comparators registered with this method have precedence over comparators registered with
registerComparatorForType(Comparator, Class)
.Note that registering a
Comparator
for a given field will override the previously registered BiPredicate/Comparator (if any).See
RecursiveComparisonAssert#withComparatorForFields(Comparator, String...)
for examples.- Parameters:
comparator
- theComparator
to use to compare the given fieldfieldLocations
- the locations from the root object of the fields the comparator should be used for- Throws:
NullPointerException
- if the given comparator is null.
-
registerEqualsForFields
Registers the givenBiPredicate
to compare the fields at the given locations.The fields must be specified from the root object, for example if
Foo
has aBar
field and both have anid
field, one can register a BiPredicate for Foo and Bar'sid
by calling:registerEqualsForFields(idBiPredicate, "foo.id", "foo.bar.id")
BiPredicates registered with this method have precedence over the ones registered with
registerEqualsForType(BiPredicate, Class)
or the comparators registered withregisterComparatorForType(Comparator, Class)
.Note that registering a
BiPredicate
for a given field will override the previously registered BiPredicate/Comparator (if any).See
RecursiveComparisonAssert#withEqualsForFields(BiPredicate, String...)
for examples.- Parameters:
equals
- the equals implementation to compare the given fields.fieldLocations
- the locations from the root object of the fields the comparator should be used for- Throws:
NullPointerException
- if the given BiPredicate is null.- Since:
- 3.17.0
-
registerEqualsForFieldsMatchingRegexes
Allows to register aBiPredicate
to compare fields whose location matches the given regexes. A typical usage is to compare double/float fields with a given precision.The fields are evaluated from the root object, for example if
Foo
has aBar
field and both have anid
field, one can register a BiPredicate for Foo and Bar'sid
by calling:
orregisterEqualsForFieldsMatchingRegexes(idBiPredicate, ".*id")
registerEqualsForFieldsMatchingRegexes(idBiPredicate, "foo.*id")
BiPredicates registered with this method have precedence over the ones registered with
registerEqualsForType(BiPredicate, Class)
or the comparators registered withregisterComparatorForType(Comparator, Class)
but don't have precedence over the ones registered with exact location match:registerEqualsForFields(BiPredicate, String...)
orregisterComparatorForFields(Comparator, String...)
If registered regexes for different
BiPredicate
match a given field, the latest registered regexesBiPredicate
wins.Example: see
RecursiveComparisonAssert.withEqualsForFieldsMatchingRegexes(BiPredicate, String...)
- Parameters:
equals
- theBiPredicate
to use to compare the fields matching the given regexesregexes
- the regexes from the root object of the fields location the BiPredicate should be used for- Throws:
NullPointerException
- if the given BiPredicate is null.- Since:
- 3.24.0
-
registerErrorMessageForFields
Registers the giving message which would be shown when differences in the given fields while comparison occurred.The fields must be specified from the root object, for example if
Foo
has aBar
field and both have anid
field, one can register a message for Foo and Bar'sid
by calling:registerErrorMessageForFields("some message", "foo.id", "foo.bar.id")
Messages registered with this method have precedence over the ones registered with
registerErrorMessageForType(String, Class)
.In case of
null
as message the default error message will be used (SeeComparisonDifference.DEFAULT_TEMPLATE
).- Parameters:
message
- the error message that will be thrown when comparison error occurredfieldLocations
- the field locations the error message should be used for
-
registerErrorMessageForType
Registers the giving message which would be shown when differences for the giving type while comparison occurred.Message registered with this method have less precedence than the ones registered with
registerErrorMessageForFields(String, String...)
.In case of
null
as message the default error message will be used (SeeComparisonDifference.DEFAULT_TEMPLATE
).- Parameters:
message
- the error message that will be thrown when comparison error occurredclazz
- the type the error message should be used for
-
strictTypeChecking
public void strictTypeChecking(boolean strictTypeChecking) Sets whether the recursive comparison will check that actual's type is compatible with expected's type (the same applies for each field). Compatible means that the expected's type is the same or a subclass of actual's type.See
RecursiveComparisonAssert.withStrictTypeChecking()
for code examples.- Parameters:
strictTypeChecking
- whether the recursive comparison will check that actual's type is compatible with expected's type.
-
isInStrictTypeCheckingMode
public boolean isInStrictTypeCheckingMode() -
getIgnoredOverriddenEqualsForTypes
-
getIgnoredOverriddenEqualsForFields
-
getIgnoredOverriddenEqualsForFieldsMatchingRegexes
-
comparatorByFields
-
setIntrospectionStrategy
public void setIntrospectionStrategy(RecursiveComparisonIntrospectionStrategy introspectionStrategy) Defines how objects are introspected in the recursive comparison.Default to
DefaultRecursiveComparisonIntrospectionStrategy
.- Parameters:
introspectionStrategy
- theRecursiveComparisonIntrospectionStrategy
to use
-
toString
-
hashCode
public int hashCode() -
equals
-
multiLineDescription
-
describeIgnoreAllActualNullFields
-
describeIgnoreAllActualEmptyOptionalFields
-
builder
Creates builder to buildRecursiveComparisonConfiguration
.- Returns:
- created builder
-