Guava中有一个非常酷的Ticker概念.不幸的是,它似乎是围绕生成纳秒级聚焦秒表来设计,用于测量执行持续时间.
我想找到像这样使用的东西,因为它使测试类对时间变化更加敏感.我在使用时遇到了一个问题,System.currentTimeMillis()因为很难模拟测试中的时间流逝.我正在考虑使用与Guava相似的接口,但是以毫秒为单位测量时间,因为它匹配更多可用的库.
在我自己写之前,我想问一下是否有人看过类似的东西或有其他建议.
正如你所指出的那样,Ticker是用于测量经过的时间(System.nanoTime()用于什么),而不是用于挂钟时间(System.currentTimeMillis()用于什么),你不应该用它来获得它.
我建议创建一个Clock类似的抽象类,Ticker但是以毫秒为单位获得挂钟时间.
这就是我在我的项目中使用的:
public interface Clock {
LocalDate today();
LocalTime time();
LocalDateTime now();
long timestamp();
}
Run Code Online (Sandbox Code Playgroud)
正如您所说,它使单元测试变得更加简单(甚至可能)。我有一个始终返回真实时间并且FakeClock我可以控制的实现。它的实现非常简单,您可以轻松地推出自己的实现 - 我认为 Guava 中没有类似的东西。
在《Growing Object-Oriented Software, Guided by Tests》中也描述并推荐了这种方法。
| 归档时间: |
|
| 查看次数: |
386 次 |
| 最近记录: |