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

Dre*_*ens 3 java unit-testing

在单元测试中,我经常使用返回DateTimeon或about的方法now().有没有办法说actual日期时间是在DateTime的几秒钟内actual

Col*_*inD 6

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

也就是说,我确信你可以通过添加和减去所需的秒数然后进行比较来创建新的s,从而轻松编写一种方法来检查a DateTime是否在另一个范围内.DateTimeDateTime


Dre*_*ens 4

事实证明,使用 Joda Time 这非常简单:

Duration dur = new Duration(sender.getStartTime(), new DateTime());
assertTrue(5000 > dur.getMillis());
Run Code Online (Sandbox Code Playgroud)