我正在编写一个 Android 应用程序,我从日历中看到了一些奇怪的行为,所以我编写了以下测试:
public void testCalendar1(){
int[] months = {
Calendar.JANUARY,
Calendar.FEBRUARY,
Calendar.MARCH,
Calendar.APRIL,
Calendar.MAY,
Calendar.JUNE,
Calendar.JULY,
Calendar.AUGUST,
Calendar.SEPTEMBER,
Calendar.OCTOBER,
Calendar.NOVEMBER,
Calendar.DECEMBER,
};
for(int i = 0; i < months.length; i++){
assertEquals(months[i], i);
}
}
public void testCalendar2(){
Calendar cal = Calendar.getInstance();
for(int i = 0; i < 12; i++){
cal.set(Calendar.MONTH, i);
assertEquals(cal.get(Calendar.MONTH), i);
}
}
我希望两个测试都能通过,但第二个测试失败并出现错误:
junit.framework.AssertionFailedError: expected:<2> but was:<1>
at ...
因此,似乎当日历月设置为 1(二月)时,get 方法返回 2(三月)。有没有人见过这样的行为或知道可能是什么原因造成的?还是我刚刚做了一些愚蠢的事情?
注意:这些测试在 Android 手机上作为 Android junit 测试运行。
编辑:我刚刚意识到它只发生在 2 月,而今天是 4 月 30 日。看来我已经回答了我自己的问题。