September 2019
Intermediate to advanced
816 pages
18h 47m
English
Having two Optional objects in assertEquals() doesn't require unwrapped values. This is applicable because Optional.equals() compares the wrapped values, not the Optional objects. This is the source code of Optional.equals():
@Overridepublic boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof Optional)) { return false; } Optional<?> other = (Optional<?>) obj; return Objects.equals(value, other.value);}
Let's assume that we have two Optional objects:
Optional<String> actual = ...;Optional<String> expected = ...;// orOptional actual = ...;Optional expected = ...;
It is advisable to avoid a test written as follows:
// Avoid@Testpublic void givenOptionalsWhenTestEqualityThenTrue() ...