TDD. Calendar. Как писать тесты на методы работающие с датой, если там используется и текущая?

320
23 декабря 2016, 13:02

У меня есть метод:

public int checkQuality() {
    Calendar currentDate = Calendar.getInstance();
    long differenceOne = this.expireDate.getTimeInMillis() - this.createDate.getTimeInMillis();
    long differenceTwo = currentDate.getTimeInMillis() - this.createDate.getTimeInMillis();
    return (int) (((float) differenceTwo / differenceOne) * 100);
}

Он проверяет в процентах на сколько вышел срок годности товара в процентах, и возвращает int этих процентов.

Мне нужно его протестировать и первый тест выглядит так:

@Test
public void whenThen() {
    Calendar createDate = new GregorianCalendar(2016, 11, 16);
    Calendar expireDate = new GregorianCalendar(2017, 11, 31);
    Product food = new Food(createDate, expireDate);
    ControlQuality control = new ControlQuality();
    control.uploadInRepo(food);
    assertThat(food, is(control.getRepo().get(0).getProducts().get(0)));
}

Совершенно очевидно что через пару дней он уже работать не будет. Можно конечно при создании объектов Calendar оттолкнуться от текущей даты, но мне кажется это какой-то костыль... Как мне сделать что-бы это работало всегда без палок, лома, и прочей подручной утвари?

READ ALSO
Поиск нецензурных слов в словах

Поиск нецензурных слов в словах

Подскажите, как cделать простую и не очень медленную проверку отправляемого текста на сервер на наличие матов? Те ввел юзер плохие слова и идет...

343
RestTemplate - как отправить на сервер строку

RestTemplate - как отправить на сервер строку

Использую SpringНужно сделать post-запрос из андроид приложения

435
android - NullPointerException в onLoadFinished

android - NullPointerException в onLoadFinished

ПриветЯ новичок в программировании, пытаюсь сделать простенькое приложение для создания напоминаний

556
Нужно достать из таблицы число

Нужно достать из таблицы число

Есть база данных (postgreSQL) в ней имеется таблица с числами типа moneyЗадача достать с этой таблицы это число на языке джава

313