Не смейтесь - вместо этого представьте метод, который вы можете смоделировать, который получает даты Примерно так:
interface Utility {
Date getDate();
}
Utilities implements Utility {
public Date getDate() {
return Calendar.getInstance().getTime();
}
}
Затем вы можете добавить это в свой класс или просто использовать вспомогательный класс с набором статических методов с методом загрузки для интерфейса:
public class AppUtil {
private static Utility util = new Utilities();
public static void load(Utility newUtil) {
this.util = newUtil;
}
public static Date getDate() {
return util.getDate();
}
}
Тогда в вашем коде приложения:
private void doSomething() {
Date today = AppUtil.getDate();
....
}
Затем вы можете просто загрузить макет интерфейса в ваших методах тестирования.
@Test
public void shouldDoSomethingUseful() {
Utility mockUtility = // .. create mock here
AppUtil.load(mockUtility);
// .. set up your expectations
// exercise the functionality
classUnderTest.doSomethingViaAPI();
// ... maybe assert something
}
См. Также Должны ли вы только издеваться над типами, которыми вы владеете? и Тестировать запах - все высмеивается