Class AbstractRecursiveOperationConfiguration

java.lang.Object
org.assertj.core.api.recursive.AbstractRecursiveOperationConfiguration
Direct Known Subclasses:
RecursiveAssertionConfiguration, RecursiveComparisonConfiguration

public abstract class AbstractRecursiveOperationConfiguration extends Object
  • Field Details

    • DEFAULT_DELIMITER

      protected static final String DEFAULT_DELIMITER
      See Also:
    • ignoredFields

      private final Set<String> ignoredFields
    • ignoredFieldsRegexes

      private final List<Pattern> ignoredFieldsRegexes
    • ignoredTypes

      private final Set<Class<?>> ignoredTypes
  • Constructor Details

  • Method Details

    • ignoreFields

      public void ignoreFields(String... fieldsToIgnore)
      Adds the given fields to the set of fields from the object under test to ignore in the recursive comparison.

      The fields are ignored by name, not by value.

      See RecursiveComparisonAssert#ignoringFields(String...) for examples.

      Parameters:
      fieldsToIgnore - the fields of the object under test to ignore in the comparison.
    • getIgnoredFields

      public Set<String> getIgnoredFields()
      Returns the set of fields from the object under test to ignore in the recursive comparison.
      Returns:
      the set of fields from the object under test to ignore in the recursive comparison.
    • ignoreFieldsMatchingRegexes

      public void ignoreFieldsMatchingRegexes(String... regexes)
      Allows to ignore in the recursive comparison the object under test fields matching the given regexes. The given regexes are added to the already registered ones.

      See RecursiveComparisonAssert#ignoringFieldsMatchingRegexes(String...) for examples.

      Parameters:
      regexes - regexes used to ignore fields in the comparison.
    • getIgnoredFieldsRegexes

      public List<Pattern> getIgnoredFieldsRegexes()
    • ignoreFieldsOfTypes

      public void ignoreFieldsOfTypes(Class<?>... types)
      Makes the recursive assertion to ignore the object under test fields of the given types. The fields are ignored if their types exactly match one of the ignored types, for example if a field is a subtype of an ignored type it is not ignored.

      If some object under test fields are null it is not possible to evaluate their types and thus these fields are not ignored.

      Example:

       public class Person {
         String name;
         String occupation;
         Address address = new Address();
       }
      
       public static class Address {
         int number;
         String street;
       }
      
       Person sherlock = new Person("Sherlock", "Detective");
       sherlock.address.street = "Baker Street";
       sherlock.address.number = 221;
      
       // assertion succeeds Person has only String fields except for address
       assertThat(sherlock).usingRecursiveAssertion()
                           .ignoringFieldsOfTypes(Address.class)
                           .allFieldsSatisfy(field -> field instanceof String);
      
       // assertion fails because of address and address.number
       assertThat(sherlock).usingRecursiveComparison()
                           .allFieldsSatisfy(field -> field instanceof String);
      Parameters:
      types - the types of the object under test to ignore in the comparison.
    • asWrapperIfPrimitiveType

      protected static Class<?> asWrapperIfPrimitiveType(Class<?> type)
    • getIgnoredTypes

      public Set<Class<?>> getIgnoredTypes()
      Returns the set of fields from the object under test types to ignore in the recursive comparison.
      Returns:
      the set of fields from the object under test types to ignore in the recursive comparison.
    • describeIgnoredFields

      protected void describeIgnoredFields(StringBuilder description)
    • describeIgnoredFieldsRegexes

      protected void describeIgnoredFieldsRegexes(StringBuilder description)
    • describeIgnoredTypes

      protected String describeIgnoredTypes()
    • describeRegexes

      protected String describeRegexes(List<Pattern> regexes)
    • join

      protected static String join(Collection<String> typesDescription)
    • matchesAnIgnoredFieldRegex

      public boolean matchesAnIgnoredFieldRegex(FieldLocation fieldLocation)
    • matchesAnIgnoredField

      public boolean matchesAnIgnoredField(FieldLocation fieldLocation)
    • describeIgnoredFields

      private String describeIgnoredFields()