This happens when
.withRedefinedSuperclass() is called, but calling
classUnderTest.equals(superclass) is true. If the superclass and the class under test both override
equals, and an instance of one is allowed to be equal to an instance of the other, there is no way to satisfy both the symmetry and transitivity requirements of the equals contract.
There are two ways to fix this. Either override
equals in the class under test only, not in the superclass; or make sure an instance of the class under test can never be equal to an instance of the superclass by using the
canEqual style of
equals method definition. Note that the latter option is quite complex. For more information, read this article, Pitfall #4.