为了测试目的(截取本地通知的屏幕截图),我需要能够从代码中锁定设备(模拟器)。我查看了这里的一些答案(GSEventLockDevice),但它们非常古老并且对我没有用。
import XCTest
class LockTests: XCTestCase {
func testExample() {
XCUIDevice.shared().perform(NSSelectorFromString("pressLockButton"))
let localNotification = UILocalNotification()
localNotification.fireDate = Date(timeIntervalSinceNow: 2)
localNotification.alertBody = "This is local notification"
localNotification.timeZone = NSTimeZone.local
localNotification.category = "Message"
UIApplication.shared.scheduleLocalNotification(localNotification)
}
}
你将会得到类似于这样的东西:
我对你所使用的快照工具没有经验,但是你需要知道进入锁定状态需要时间,因此在创建快照之前等待一段时间可能会很有用(你可以使用以下代码):
let date = Date(timeIntervalSinceNow: 3)
while date.timeIntervalSinceNow > 0 {
CFRunLoopRunInMode(CFRunLoopMode.defaultMode, 0.1, true)
}
此外,你可以通过调用以下方法(仅适用于iOS 10)在测试结束后返回SpringBoard:
XCUIDevice.shared().press(.home)