Обратите внимание, что на самом деле вы тестируете только небольшую часть того, что используете: например, все и никакие конструкторы arg, setter, hashCode()
и equals()
не тестируются.
Теперь это хорошая практика, чтобы проверить это?
Я думаю, что это так.
Использование аннотаций Lombok создает некоторые реализации, которые вы можете проверить поведение только во время выполнения (тестирование и время выполнения приложения).
Например, аннотация может не давать ожидаемого поведения из-за конфликта с другим или из-за неправильного использования (например, ошибка переполнения стека, если в сгенерированном методе существует цикл), и вы можете обнаружить их только во время выполнения, в лучшем случае с исключением, в котором четко указано проблема или, в худшем случае, коварная ошибка, коренная причина которой не очевидна.
Точно так же, если кто-то непреднамеренно нарушает реализацию, заменяя ее (для целей отладки):
@ToString(exclude = "client")
от:
@ToString
Вы хотите, чтобы автоматизированный тест обнаружил его.
Наконец, если вы хотите по какой-либо причине удалить Lombok из своего проекта, вы хотели бы иметь регрессионные тесты, которые могут подтвердить, что новая реализация без Lombok по-прежнему верна.
Так что да, если использовать много аннотаций, значит написать много утверждений / тестов.
Но в некотором смысле это нормально, так как приведение в действие ваших классов сторонним API - это не мелочь.
Обратите внимание, что для получателей / установщиков я не думаю, что это имеет большое значение для их тестирования, поскольку тот факт, что они могут вызывать их, обычно означает, что они были правильно реализованы Lombok.
Рассуждение в этих терминах (унитарное тестирование того, что обеспечивает API вашего класса) способствует созданию полезного и качественного кода, потому что мы дважды подумаем, прежде чем добавлять аннотацию, которая генерирует некоторый код / логику. И это хорошо, потому что я часто вижу злоупотребления аннотациями Lombok: «мы не уверены, что это нужно, но нет проблем, так как это легко объявить».
Я бы применил точно такую же идею для аннотаций javax.validation.constraints
, в то время как для проверки правильности я бы, вероятно, использовал параметризованные тесты для уменьшения кода котельной пластины.