У меня есть класс, который вычисляет дату, и мне интересно, как лучше это проверить. Я придумала два подхода и задаюсь вопросом о твоих мыслях о том, что лучше (и, конечно, о любых других гениальных идеях, которые у тебя могут быть).
Например, в моем коде, если условия не выполняются, возвращается дата по умолчанию: один год и один месяц с сегодняшнего дня.
Подход № 1:
Дублируйте логику расчета даты в модульном тесте:
DateMidnight expectedDefaultDate = new DateMidnight().plusYears(1).plusMonths(1);
assertEquals(expectedDefaultDate , unit.getExpireDate());
Подход № 2:
Введите «сегодня» как фиксированный момент времени и ожидаемую дату ответа жесткого кода:
DateMidnight fixedPointInTime = new DateMidnight(2011, 06, 05);
unit.setToday(fixedPointInTime);
DateMidnight expectedDefaultDate = new DateMidnight(2012, 07, 05);
assertEquals(expectedDefaultDate, unit.getExpireDate());
Я довольно разорван над этим. Я не очень разбираюсь в дублировании кода, но первый подход мне более понятен относительно того, что ожидается. Что бы вы использовали (если есть) и почему?