Я столкнулся с интересным поведением рекурсивного сравнения в библиотеке assertj. Если вы сравниваете объекты классов, которые являются подклассами, поля суперклассов, кажется, пропускаются во время сравнения. Это известная проблема? Или я что-то не так делаю? Вот краткий пример:
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
public class ExampleTest {
@Test
public void test() {
MyException expected =
new MyException("Expected text message");
MyException actual = new MyException("Actual text message"); //values for the field Throwable.detailMessage are different
assertThat(actual).usingRecursiveComparison().ignoringAllOverriddenEquals().isEqualTo(expected);
}
}
class MyException extends RuntimeException {
MyException(String message) {
super(message);
}
}
Этот тест пройдет, когда на самом деле это не так, как actual.getMessage()
и expected.getMessage()
покажет разные значения.