При написании модульных тестов я часто сталкиваюсь с ситуацией, когда equals()
для какого-либо объекта в тестах - в assertEquals
- должен работать иначе, чем он работает в реальной среде. Возьмем, например, некоторый интерфейс ReportConfig
. Он имеет id
и несколько других полей. Логично, что один config равен другому, когда их соответствие id
. Но когда дело доходит до тестирования некоторой конкретной реализации, скажем, XmlReportConfig
, очевидно, я хочу сопоставить поля all. Одно из решений - не использовать equals
в тестах и просто перебирать свойства объекта или поля и сравнивать их, но это не похоже на хорошее решение.
Итак, помимо этого конкретного типа ситуаций, я хочу разобраться, какие лучшие практики для реализации equals, семантически, а не технически.