4週間前と1ヶ月前の見分け方 Androidでテストコードを書いたときに問題が発生しました。
検査した日によると思います。私は正しいと思いますか?私の意見が正しければ、どうすればうまくいくか、テストコードに合格できますか?
テスト コードに合格するための私のアイデアの 1 つは、テストの日付を保持することです。何かアイデアはありますか?
申し訳ありませんが、私の質問は明確ではないと思います。私のコードの一部はここにあります。
assertEquals("a month ago", timeAgoWithAddedValue(Calendar.MONTH, -1));
private String timeAgoWithAddedValue(int field, int value) {
Calendar cal = Calendar.getInstance();
cal.add(field, value);
return timeAgo(cal.getTime());
}
public static final long WEEK_UNIT = DAY_UNIT * 7;
public static final long MONTH_UNIT = 2629746000L; // I found this value online, 1 Gregorian month -> ms
public static final long YEAR_UNIT = 31556952000L; // I found this value online, 1 Gregorian year -> ms
public String timeAgo(Date date) {
long now = Calendar.getInstance().getTimeInMillis();
long sinceNowInMillis = now - date.getTime();
...
if (sinceNowInMillis < MONTH_UNIT) {
long weeks = sinceNowInMillis / WEEK_UNIT;
// return proper ago string with weeks
}
if (sinceNowInMillis < YEAR_UNIT) {
long months = sinceNowInMillis / MONTH_UNIT;
// return proper ago string with months
}
...
}
数か月前にコードを書きましたが、その時点では成功しています。しかし、今日、テスト コードは失敗しました。コードが4 weeks ago
代わりに期待していたからです。私のコードが間違っているのだろうか、それとも問題は週の長さに依存しているので、それは自然な問題なのだろうか?