在Robolectric测试中冻结时间

3

在使用Robolectric运行测试时,有没有一种方式可以固定系统时钟?我有一些代码依赖于星期几。在rspec中,有TimeCop gem可以让你固定系统时间。Robolectric有类似的东西吗?

1个回答

1

谢谢你的建议。我最终从另一个角度来解决这个问题,根据当前时间计算我的测试数据,而不是为测试数据冻结时间。如果我需要添加该功能,这似乎是正确的方法。 - karl
当您在午夜运行测试时,测试的行为与下午3点运行时不同。您如何确保逻辑行为在不同的时间/日期得到充分测试? - nenick
我的测试基于日期。与其始终使用固定日期测试对象并在测试时将系统时间设置为我创建测试时的日期,我发现使用当前日期创建测试对象更加清晰和简单。 - karl
1
如果您使用jodatime,那么即使正在使用ShadowSystemClock,对DateTime.now()的调用也将使用真实的系统时间。为了克服这个问题,请执行以下操作:DateTimeUtils.setCurrentMillisFixed(fakeTime.getMillis()); SystemClock.setCurrentTimeMillis(fakeTime.getMillis()); - Farrukh Najmi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接