Interface Representation

All Known Implementing Classes:
BinaryRepresentation, CompositeRepresentation, HexadecimalRepresentation, StandardRepresentation, UnicodeRepresentation

public interface Representation
Controls the formatting (String representation) of types in assertion error messages.

There are several ways to replace the StandardRepresentation as the default Representation:

The advantage of registering a representation (or a configuration overriding the default representation) is that you don't need to do anything in your tests, the java runtime will discover it and AssertJ will use it but it requires a bit more work than a simple call to Assertions.useRepresentation(Representation).

Note that a Configuration overriding the default representation takes precedence over any registered representation.

To register a Representation, you need to do several things:

  • create a file named org.assertj.core.presentation.Representation file in META-INF/services directory
  • put the fully qualified class name of your Representation in it
  • make sure META-INF/services/org.assertj.core.presentation.Representation is in the runtime classpath, usually putting it in src/test/resources is enough

The assertj-examples project provides a working example of registering a custom representation.

Registering a representation has been introduced in AssertJ 2.9.0/3.9.0.

Since 3.22.0, AssertJ can load multiples representations from the classpath, the idea behind is that different domain-specific libraries would be able to independently register representations for their respective domain. AssertJ aggregate them in a CompositeRepresentation which loops over the different representations and use the first non null representation value of the variable to display. If multiples representations overlap the highest priority one wins (see getPriority()). The StandardRepresentation is the fallback option when all the registered representations returned a null representation of the value to display (meaning they did not know how to represent the value).

Author:
Mariusz Smykula
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
     
  • Method Summary

    Modifier and Type
    Method
    Description
    default int
    In case multiple representations are loaded through ServiceLoader and they can represent the same types the one with the highest priority is selected.
    Returns the String representation of the given object.
    default String
    Override this method to return a String representation of the given object that is unambigous so that it can be differentiated from other objects with the same toStringOf(Object) representation.
  • Field Details

  • Method Details

    • toStringOf

      String toStringOf(Object object)
      Returns the String representation of the given object. It may or may not be the object's own implementation of toString.
      Parameters:
      object - the object to represent.
      Returns:
      the toString representation of the given object.
    • unambiguousToStringOf

      default String unambiguousToStringOf(Object object)
      Override this method to return a String representation of the given object that is unambigous so that it can be differentiated from other objects with the same toStringOf(Object) representation.

      The default implementation calls toStringOf(Object) but the StandardRepresentation adds the object hexadecimal identity hash code.

      Parameters:
      object - the object to represent.
      Returns:
      the unambiguous toString representation of the given object.
    • getPriority

      default int getPriority()
      In case multiple representations are loaded through ServiceLoader and they can represent the same types the one with the highest priority is selected. If representations have the same priority, there is no guarantee which one is selected (but one will).

      The StandardRepresentation is the fallback option when all the registered representations returned a null representation of the value to display (meaning they did not know how to represent the value).

      The default priority is 1.

      Returns:
      the representation priority.