If a nested field is null while comparing equality for two objects with isEqualToComparingFieldByFieldRecursively a NullPointerException is thrown.
Exception in thread "main" java.lang.NullPointerException
at org.assertj.core.error.ShouldBeEqualByComparingFieldByFieldRecursively.describeDifference(ShouldBeEqualByComparingFieldByFieldRecursively.java:67)
at org.assertj.core.error.ShouldBeEqualByComparingFieldByFieldRecursively.shouldBeEqualByComparingFieldByFieldRecursive(ShouldBeEqualByComparingFieldByFieldRecursively.java:32)
at org.assertj.core.internal.Objects.assertIsEqualToComparingFieldByFieldRecursively(Objects.java:728)
at org.assertj.core.api.AbstractObjectAssert.isEqualToComparingFieldByFieldRecursively(AbstractObjectAssert.java:653)
...
class Main {
static class Value {
private final String v;
public Value(String v) {
this.v = v;
}
}
public static void main(String[] args) {
Value actual = new Value(null); //swapping actual and expected leads to the same error
Value expected = new Value("something");
Assertions.assertThat(expected).isEqualToComparingFieldByFieldRecursively(actual);
}
}
Thanks for reporting this !
This is regression in version 2.9.0/3.9.0 introduced by https://github.com/joel-costigliola/assertj-core/commit/fb9f9522f7abe2d863af6aa760ec7e8162009f49
@hwielenberg As a workaround you can use 3.8.0
I could write the Bugfix if you want.
Should be straightforward.
Contributions welcome! 馃槂
I have a fix for this, will create pull request shortly.
backport to 2.x (fixed in 3.9.1)
created #1204 for branch 2.x