Я писал код, который обрабатывает определенные поля объекта, изменяя их значения. Чтобы проверить его, я сначала написал тестовый пример JUnit, который рекурсивно пересекает поля объекта и гарантирует их правильное изменение. CUT (Class Under Test) делает что-то похожее: он рекурсивно пересекает поля объекта и изменяет их по мере необходимости.Java: дублирование кода в классах и их тестовые примеры Junit
Таким образом, код для рекурсивного прохождения полей остается неизменным в тестовом случае и CUT и в настоящее время дублируется, что противоречит DRY. Поэтому у меня есть два вопроса:
1) Вы сталкивались с такими ситуациями в своем проекте? Если да, применяете ли вы DRY, или пусть такое дублирование остается таким, как есть?
2) если я поместил этот общий код в метод утилиты, мне нужно будет написать тестовый пример, чтобы проверить это, что снова будет включать рекурсивные пересечения полей. Итак, как это можно решить без добавления дублирования?
Я показал аналогичный код здесь: http://stackoverflow.com/questions/10749946/java-using-command-pattern-in-the-following-code Объекты, которые я обрабатываю, являются большими, поэтому нерекурсивный JUnit для их проверки станет довольно длинным. Возможно, это единственный способ проверить это. И вы правы в том, что у вас такая же ошибка в тестах и CUT. Я сжег пальцы в этом же коде. – shrini1000
@ shrini1000: глядя на ваш код: ** да **, создайте образец объекта и сделайте все утверждения вручную. Это ** является правильным способом. –