【发布时间】:2017-12-29 20:00:48
【问题描述】:
我不知道如何在真实设备或模拟器上启动测试之前更改系统日期时间。你能帮帮我吗?
【问题讨论】:
标签: xctest ios-ui-automation xctestcase
我不知道如何在真实设备或模拟器上启动测试之前更改系统日期时间。你能帮帮我吗?
【问题讨论】:
标签: xctest ios-ui-automation xctestcase
我不认为您可以实际上更改系统时间。您可以做的是提供您自己的类来返回日期并在任何地方使用它来代替 Date 类。在您的自定义课程中,您将能够选择返回您的测试时间或系统时间,具体取决于您是否正在测试。
如果您这样做,您的应用内代码将显示为 let now = CustomDate() 而不是 let now = Date()。
这个问题在这里已经有了 Objective-C 的答案:Set iPhone date/time within app for testing purposes?。
【讨论】:
这是在 Swift 中执行此操作的简单方法。
类 CustomDate { static var dateOverride: 日期?
static func get() -> Date {
return dateOverride ?? Date()
}
}
然后在您的应用中使用CustomDate.get(),而不是使用Date()。
在您的测试代码中,将CustomDate.dateOverride 设置为您喜欢的任何内容,您应该能够在您的应用中模拟系统日期更改。但是,在您的应用代码中,切勿设置 dateOverride 以避免意外行为。
【讨论】: