0
我正在嘗試爲某個類編寫測試用例。我想將測試用戶的年齡設置爲一定的值,但我不想處理年齡計算和/或使junit測試用例具有時間獨立性,我知道該如何去感謝@SkinnyJ earlier post。基於年齡的Joda-Time設置日期對象
那麼,有沒有辦法做這樣的事情:老
LocalDate birthday = new LocalDate(72Y3M);
72年3個月是用戶期望的時代。然後,喬達時間將採取這個數字,並計算他/她的生日應該是那個年齡,並返回該日期。所以在這種情況下,生日是October 8, 1943
。
嘗試1:
public LocalDate setUsersAge(int years, int months, int days) {
LocalDate birthday = new LocalDate();
birthday.minusYears(years);
birthday.minusMonths(months);
birthday.minusDays(days);
return birthday
}
嘗試2:
public LocalDate setUsersAge(int years, int months, int days) {
Period age = new Period();
age.withYears(years);
age.withMonths(months);
age.withDays(days);
return birthday.minus(age);
}
雖然兩者的方式完成工作,我只是不喜歡代碼的樣子。有沒有更乾淨的方法來做到這一點?
很好的答案,但請注意,時區對確定今天的日期至關重要。該代碼隱含地依賴於JVM當前的默認時區。即使在運行期間,該默認設置也可以隨時更改。我建議明確,將期望/期望的時區傳遞給「now」方法的調用。 –
@BasilBourque感謝您的評論。你當然是對的。我總是在生產代碼中傳遞時區,但我認爲這些都是單元測試,它們都將在同一個JVM上完成。但是,最好是安全而不是抱歉:) –