public interface Representation
There are several ways to replace the StandardRepresentation as the default Representation:
Assertions.useRepresentation(Representation), from this point all assertions will use the given representation.Configuration overriding the default representation specified with Configuration.representation() as explained here.
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:
org.assertj.core.presentation.Representation file in META-INF/services directoryRepresentation in itMETA-INF/services/org.assertj.core.presentation.Representation is in the runtime classpath, usually putting it in src/test/resources is enoughThe 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).
| Modifier and Type | Field and Description |
|---|---|
static int |
DEFAULT_PRIORITY |
| Modifier and Type | Method and Description |
|---|---|
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. |
String |
toStringOf(Object object)
Returns the
String representation of the given object. |
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. |
static final int DEFAULT_PRIORITY
String toStringOf(Object object)
String representation of the given object. It may or may not be the object's own implementation of
toString.object - the object to represent.toString representation of the given object.default String unambiguousToStringOf(Object object)
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.
object - the object to represent.toString representation of the given object.default int getPriority()
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.
Copyright © 2025. All rights reserved.