如何使用 joda 时间模拟系统日期

How to mock system date with joda time

提问人:Taslim Oseni 提问时间:2/23/2021 更新时间:2/23/2021 访问量:406

问:

我正在为一个流编写一个 UI 测试,该流利用当前日期进行一些处理。以下是我在片段中获取当前日期的方法:

val today = dateFormat.format(Date())

在我的测试中,我想使用固定日期。为此,我决定使用Joda时间。以下是我在测试中实现它的方式:

@Test
fun testAFlow() {

    // setting date to fixed value
    DateTimeUtils.setCurrentMillisFixed(1610248674000)

    // launching activity
    activityRule.launchActivity(Intent())

    // remainder flow
    ...
}

测试运行良好,不会中断,但仍在使用实际日期而不是模拟日期。我该如何解决这个问题?

卓 安 - 浓缩咖啡 安卓 - JodaTime

评论


答:

1赞 anatoli 2/23/2021 #1

您将通过调用currentTimeMillisDateTimeUtils

Log.d(BuildConfig.app_tag,"time " + DateTimeUtils.currentTimeMillis()); // output: current time millis

DateTimeUtils.setCurrentMillisFixed(1610248674000L);
    
Log.d(BuildConfig.app_tag,"time " + DateTimeUtils.currentTimeMillis()); // output: 1610248674000

不会改变的行为System.currentTimeMillis()

评论

0赞 Taslim Oseni 2/23/2021
好的,谢谢。那么我该如何更改/模拟 System.currentTimeMillis() 呢?
0赞 anatoli 2/24/2021
@TaslimOseni,这可能会有所帮助