时间相关的单元测试

2023-11-21

我需要测试一个函数,其结果将取决于当前时间(使用 Joda 时间)isBeforeNow(),事情就这么发生了)。

public boolean isAvailable() {
    return (this.someDate.isBeforeNow());
}

是否可以使用(例如使用 Mockito)存根/模拟系统时间,以便我可以可靠地测试该功能?


使代码可测试的最佳方法(IMO)是将“当前时间”的依赖项提取到其自己的接口中,并使用使用当前系统时间(通常使用)的实现和允许您设置时间的实现,根据需要推进等等。

我在各种情况下都使用过这种方法,而且效果很好。设置很容易 - 只需创建一个界面(例如Clock)它有一个方法可以以您想要的任何格式提供当前时刻(例如使用 Joda Time,或者可能是Date).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

时间相关的单元测试 的相关文章

随机推荐