Переопределить Систему Java.currentTimeMillis для тестирования чувствительного ко времени кода
есть ли способ, либо в коде, либо с аргументами JVM, переопределить текущее время, как представлено через System.currentTimeMillis, кроме ручного изменения системных часов на главной машине?
немного истории:
у нас есть система, которая запускает ряд бухгалтерских заданий, которые вращают большую часть своей логики вокруг текущей даты (т. е. 1-го числа месяца, 1-го года и т. д.)
к сожалению, многие устаревшие коды вызывают такие функции, как new Date() или Calendar.getInstance(), оба из которых в конечном итоге призыв к System.currentTimeMillis.
для целей тестирования, прямо сейчас, мы застряли с ручным обновлением системных часов, чтобы манипулировать какое время и дату код думает, что тест выполняется.
Итак, мой вопрос:
есть ли способ переопределить то, что возвращается System.currentTimeMillis? Например, чтобы сказать JVM автоматически добавлять или вычитать некоторое смещение перед возвращением из этого метода?
спасибо вперед!
Comments