在单元测试中,我经常会在DateTime
上或之后返回now()
的方法。有没有办法说actual
DateTime在actual
DateTime的几秒内?
答案 0 :(得分:6)
这听起来不错。单元测试不应该以任何方式依赖于实际当前时间...这就是为什么在类的构造函数中注入一些可能称为Clock
的接口并将其用作当前时间源的一个好习惯。 。然后在单元测试中,您可以使用一个特殊的实现,您可以控制它返回的时间,使您的测试确定性。
那就是说,我确信您可以通过添加和减去创建新的DateTime
来轻松编写一种检查DateTime
是否在另一个DateTime
的特定范围内的方法所需的秒数然后进行比较。
答案 1 :(得分:2)
事实证明,使用Joda Time时非常容易:
Duration dur = new Duration(sender.getStartTime(), new DateTime());
assertTrue(5000 > dur.getMillis());