Мой совет: даже не пытайтесь.Статический доступ почти всегда является препятствием для тестируемого кода.Не приобретайте Clock
статическим методом.Вместо этого создайте Clock.systemDefaultZone()
вне этого метода и вставьте его либо в качестве параметра метода, либо с помощью внедрения конструктора / установщика в класс этого метода (именно так, как вы говорите, вы не хотите делать!)
Затем вы можете предоставить все, что вам нравится Clock
для ваших модульных тестов.
Весь смысл класса Clock
в том, что вы можете сделать это!Все дело в том, что Clock
может быть введен, тогда как статические вызовы, такие как new Date()
или System.currentTimeMillis()
, не могут.
Если вам абсолютно необходимо протестировать код, который использует статические методы, Powermock или аналогичный может помочь сэтот.На мой взгляд, кроме унаследованного кода, чьи зависимости вы не можете убрать, это почти никогда не понадобится.