gpt4 book ai didi

java - 是否可以卡住 System.currentTimeMillis() 进行测试

转载 作者:搜寻专家 更新时间:2023-10-30 21:36:27 26 4
gpt4 key购买 nike

出于某些测试目的,我想准确预测 System.currentTimeMillis() 将返回什么。有什么方法可以卡住或手动设置调用 System.currentTimeMillis() 时返回的内容?

最佳答案

我强烈建议您避免在通用代码中使用 System.currentTimeMillis(和 new Date() 等)。

相反,创建一个表示“为您提供当前时间的服务”的 Clock 接口(interface),然后创建一个确实使用 System.currentTimeMillis 或其他任何内容,以及您可以显式控制的伪造实现。

使用依赖注入(inject)使此服务的实例可用于需要它的代码。在生产中,使用 System.currentTimeMillis 版本,在测试中使用你的假版本。

这让您不仅可以停止时间,还可以将其设置为任何您想要的 - 这样您就可以拥有您知道永远不会过期的静态测试数据,并且您可以轻松地测试边界周围的棘手事物等。我'我在许多项目中都非常成功地使用了这种方法,在某种程度上,在我的 Noda Time 项目中,它是获取“当前时间”的方式。

请注意,如果您要花大量时间使用 Java,我建议您使用 Joda Time ,并使您的 Clock 接口(interface)返回一个 Instant:

public interface Clock {
Instant now();
}

关于java - 是否可以卡住 System.currentTimeMillis() 进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17398279/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com