У меня есть следующий код в тесте JUnit, который, казалось, работал на прошлой неделе, не работает на этой неделе:
Calendar cal = Calendar.getInstance();
cal.set(2011, Calendar.JULY, 12);
cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY); // push the date to 15
System.out.println(cal.get(Calendar.DATE));
Как вы, вероятно, можете сделать вывод из моего комментария, поскольку 12-й вторник, я ожидаю, что Date будет 15 после установки DAY_OF_WEEK в пятницу. Однако напечатанное значение равно 22 и приводит к сбою теста.
Если я, однако, изменим код следующим образом и добавлю дополнительный вызов, чтобы получить:
Calendar cal = Calendar.getInstance();
cal.set(2011, Calendar.JULY, 12);
System.out.println(cal.get(Calendar.DATE));
cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY); // push the date to 15
System.out.println(cal.get(Calendar.DATE));
Я получаю результат, который я ожидаю, 12 и 15.
Может кто-нибудь объяснить, что происходит, и почему этот тест работал на прошлой неделе?