Не усложняйте : напишите один тест на VO / DTO:
- заполнить VO / DTO данными испытаний
- сохранить
- (необязательно: проверьте, все ли правильно сохранено на уровне базы данных, используя чистый JDBC)
- загрузить
- проверить, совпадает ли загруженный VO / DTO и исходный
Продуктивный код будет развиваться, и тесты также необходимо будет поддерживать. ИМХО лучший подход - сделать тесты максимально простыми, даже если они повторяются. Чрезмерная инженерия тестов или сама структура тестирования для создания общих тестов (например, путем чтения полей с отражением и автоматического заполнения VO / DTO) приводит к нескольким проблемам:
- время, потраченное на написание теста выше
- Ошибка может быть введена в самом тесте
- обслуживание теста сложнее, потому что они более сложные
- тесты сложнее развиваться, например, универсальный код, возможно, не будет работать для новых видов VO / DTO, которые немного отличаются от других и будут представлены позже (это только пример)
- тесты не могут быть легко использованы в качестве примера того, как работает производительный код
Тестовый и производительный код сильно различаются по природе . В продуктивном коде вы пытаетесь избежать дублирования и максимально использовать повторно. Продуктивный код может быть сложным, потому что он проверен. С другой стороны, вы должны постараться сделать тесты максимально простыми, и дублирование в порядке. Если дублирующаяся часть повреждена, проверка все равно не будет выполнена.
При изменении производительного кода для этого может потребоваться тривиальное изменение 1038 *. С проблемой в том, что тесты воспринимаются как скучный кусок кода. Но я думаю, что так и должно быть.
Если я, однако, неправильно понял ваш вопрос, просто дайте мне знать.