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 defaultRepresentation
:- call
Assertions.useRepresentation(Representation)
, from this point all assertions will use the given representation. - use a
Configuration
overriding the default representation specified withConfiguration.representation()
as explained here. - register a representation as a service discovered at program startup.
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 insrc/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 (seegetPriority()
). TheStandardRepresentation
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 int
DEFAULT_PRIORITY
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description default int
getPriority()
In case multiple representations are loaded throughServiceLoader
and they can represent the same types the one with the highest priority is selected.String
toStringOf(Object object)
Returns theString
representation of the given object.default String
unambiguousToStringOf(Object object)
Override this method to return aString
representation of the given object that is unambigous so that it can be differentiated from other objects with the sametoStringOf(Object)
representation.
-
-
-
Field Detail
-
DEFAULT_PRIORITY
static final int DEFAULT_PRIORITY
- See Also:
- Constant Field Values
-
-
Method Detail
-
toStringOf
String toStringOf(Object object)
Returns theString
representation of the given object. It may or may not be the object's own implementation oftoString
.- 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 aString
representation of the given object that is unambigous so that it can be differentiated from other objects with the sametoStringOf(Object)
representation.The default implementation calls
toStringOf(Object)
but theStandardRepresentation
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 throughServiceLoader
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.
-
-