我想测试用Java或C#编写的高度依赖于时间的应用程序.
是否有Java或C#等效的Python freezegun或Ruby timecop?
您不需要单独的库来测试基于时间的代码 - 您只需将"当前时间提供程序"视为依赖项,就像您将其他任何内容一样.因此,避免调用new Date(),Calendar.getInstance()等在Java中,和DateTime.Now,DateTime.UtcNow等在.NET.相反,创建一个Clock或IClock接口来获取"当前时间",然后创建一个普通的实施是其不使用系统时钟,和一个假的实现,它允许你设置的时间.这些写起来非常简单,并且不需要第三方库.
将时钟注入任何需要它的代码,就像任何其他依赖项一样,然后你可以在测试中提供一个假的没有问题.
实际上,在Java 8中,您可以使用java.timeAPI(这比使用Date和更好Calendar)并且具有Clock抽象类 - 其中还包括时区的概念.在.NET中,我可能会编写一个简单的接口和实现DateTime,但总是使用UTC类型DateTime.或者使用我的Noda Time项目,它带有IClock界面和测试版本.
| 归档时间: |
|
| 查看次数: |
809 次 |
| 最近记录: |