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