如何测试两个Joda-Time DateTime对象几乎相等?

时间:2011-01-26 20:58:06

标签: java unit-testing

在单元测试中,我经常会在DateTime上或之后返回now()的方法。有没有办法说actual DateTime在actual DateTime的几秒内?

2 个答案:

答案 0 :(得分:6)

这听起来不错。单元测试不应该以任何方式依赖于实际当前时间...这就是为什么在类的构造函数中注入一些可能称为Clock的接口并将其用作当前时间源的一个好习惯。 。然后在单元测试中,您可以使用一个特殊的实现,您可以控制它返回的时间,使您的测试确定性。

那就是说,我确信您可以通过添加和减去创建新的DateTime来轻松编写一种检查DateTime是否在另一个DateTime的特定范围内的方法所需的秒数然后进行比较。

答案 1 :(得分:2)

事实证明,使用Joda Time时非常容易:

Duration dur = new Duration(sender.getStartTime(), new DateTime());
assertTrue(5000 > dur.getMillis());