Questions tagged «java-time»

java.time包是一个现代的日期时间框架,它在Java 8中首次由JSR 310定义,取代了java.util.Date和.Calendar类。受Joda-Time启发,但重新设计。它使用ISO 8601标准作为解析和生成字符串的默认值,并包括表示仅日期,仅时间和时间跨度值的类。

6
使用Java 8 Clock对类进行单元测试
引入了Java 8 java.time.Clock,可以将其用作许多其他java.time对象的参数,从而使您可以向其中注入真实或虚假的时钟。例如,我知道您可以创建一个Clock.fixed()然后调用Instant.now(clock),它将返回Instant您提供的固定内容。这听起来很适合单元测试! 但是,我很难弄清楚如何最好地使用它。我有一个课,类似于以下内容: public class MyClass { private Clock clock = Clock.systemUTC(); public void method1() { Instant now = Instant.now(clock); // Do something with 'now' } } 现在,我要对该代码进行单元测试。我需要能够设置clock固定的时间,以便可以method()在不同的时间进行测试。显然,我可以使用反射将clock成员设置为特定值,但是如果我不必求助于反射,那就太好了。我可以创建一个公共setClock()方法,但这感觉不对。我不想Clock在方法中添加参数,因为真正的代码不必关心传递时钟。 处理此问题的最佳方法是什么?这是新代码,因此我可以重新组织该类。 编辑:为澄清起见,我需要能够构造一个MyClass对象,但必须能够使一个对象看到两个不同的时钟值(好像是常规系统时钟一样)。因此,我无法将固定时钟传递给构造函数。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.