При написании классов Java нередко генерировать методы с использованием вашей среды IDE, такие как
-
toString()
-
equals()
-
hashCode()
Но как только вы сгенерировали их с помощью IDE, они станут частью вашей базы кода (в SCM), и поэтому применяются все средства измерения качества.
В частности, методы equals и hashcode содержат множество условий. Если я не пишу модульные тесты, оценка по охвату кода (line-, condition-, mutation-) довольно низкая, особенно если тестируемый класс не такой большой.
Некоторые средства поддержки охвата поддерживают фильтрацию (то есть кобертуру), другие (т.е. jacoco) - нет. Но инструменты охвата показывают только симптом - непроверенный код - и поэтому я не спрашиваю, следует ли подавлять/игнорировать симптом, но как бороться с основной причиной.
Вопрос: должен ли я писать модульные тесты для этих методов?
- Если да, каковы веские причины для этого? И какой разумный подход?
- Если нет, почему бы и нет?
Я не прошу создания сгенерированных классов вообще, таких как JAXB pojos, WS-Clients и т.д., которые можно легко сгенерировать автоматически и исключить из анализа покрытия.