如何在启动测试之前更改系统日期时间[XCTest,swift]

时间:2017-07-24 09:37:07

标签: xctest ios-ui-automation xctestcase

我不知道如何在真实设备或模拟器上启动测试之前更改系统日期时间。你能帮帮我吗?

2 个答案:

答案 0 :(得分:1)

我认为你实际上可以改变系统时间。你可以做的是提供你自己的类,它返回日期并在任何地方使用它来代替Date类。在您的自定义类中,您可以选择返回测试时间或系统时间,具体取决于您是否正在测试。

如果您这样做,您的应用内代码会显示let now = CustomDate()而不是let now = Date()

这个问题在这里已经有了Objective-C的答案:Set iPhone date/time within app for testing purposes?

答案 1 :(得分:0)

这是在Swift中执行此操作的简单方法。

CustomDate类{ 静态var dateOverride:日期?

static func get() -> Date {
    return dateOverride ?? Date()
}

}

然后,在您的应用中使用Date()来代替CustomDate.get()

在测试代码中,将CustomDate.dateOverride设置为所需的任何值,您应该能够模拟应用程序中的系统日期更改。但是,在您的应用程序代码中,切勿设置dateOverride以避免意外行为