是的,有一种方法可以做到这一点,我也在我的测试中使用它。
你应该使用
launchArguments
launchEnvironment
). 首先,在你的
setUp()
方法,告诉你的应用程序在
UI-TESTING
模式:
override func setUp() {
super.setUp()
continueAfterFailure = true
app.launchArguments += ["UI-TESTING"]
}
然后,在每一个你期望注销的用户的测试中,通知你的应用程序应该在调用前注销
XCUIApplication.launch()
let app = XCUIApplication()
func testWithLoggedOutUser() {
app.launchArguments += ["logout"]
app.launch()
// Continue with the test
}
那么,在你的
AppDelegate.swift
归档,阅读参数并相应地采取行动:
class AppDelegate: UIResponder, UIApplicationDelegate {
static var isUiTestingEnabled: Bool {
get {
return ProcessInfo.processInfo.arguments.contains("UI-TESTING")
}
}
var shouldLogout: Bool {
get {
return ProcessInfo.processInfo.arguments.contains("logout")
}
}
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
if AppDelegate.isUiTestingEnabled {
if shouldLogout {
// Call synchronous logout method from your app
// or delete user data here
}
}
}
}
here
.