【发布时间】:2019-01-26 00:01:57
【问题描述】:
我有以下方法,它采用 UNIX 时间戳并以天、小时或分钟的形式返回年龄。我想用 JUnit 对其进行单元测试,但我不确定我将如何开始这样做,因为当前时间在不断变化。有什么建议吗?谢谢!
方法如下:
public static String getAge(long unixTime) throws Exception {
long diff = (System.currentTimeMillis() / 1000) - unixTime;
diff = diff / 60;
if (diff < 60) {
return Math.round(diff) + " m";
}
else
diff /= 60;
if (diff < 24) {
return Math.round(diff) + " h";
}
else {
diff /= 24;
return Math.round(diff) + " d";
}
}
【问题讨论】:
-
使用
Clock获取“当前时间”。在测试中,提供一个带有已知“当前时间”的Clock,以便您知道预期的结果。在生产中使用系统时钟,以便您获得实时时间。 -
我认为
Math.round(diff)对long没有任何影响。 -
Writing and testing convenience methods using Java 8 Date/Time classes 的可能重复项。无论如何,我相信这个问题和我对它的回答对你很有帮助。
标签: java unit-testing time