应用程序后台 XCUITest 返回错误 XCUIApplication.State
XCUITest to background the app is returning the wrong XCUIApplication.State
我有一个 XCUITest 需要将应用程序置于后台。我的理解是,当按下主页按钮时,应用程序将进入后台,我将其编码为:
XCUIDevice.shared.press(.home)
sleep(2)
XCTAssertEqual(app.state, .runningForeground)
但是,正如断言所述,该应用似乎 运行 在前台。这是我的错误实施吗?
正在替换...
sleep(5)
XCTAssertEqual(app.state, .runningForeground)
与...
let background = app.wait(for: .runningBackground, timeout: 5)
XCTAssertTrue(background)
已解决问题。
我想我必须明确地等待预期的状态发生。
iOS 应用程序不会立即进入后台——它们有时间保存数据以防应用程序将来被终止。
https://developer.apple.com/documentation/uikit/app_and_environment/managing_your_app_s_life_cycle
https://developer.apple.com/documentation/uikit/app_and_environment/scenes/preparing_your_ui_to_run_in_the_background
此外 .state
returns 结果是异步的。在讨论中阅读更多内容
https://developer.apple.com/documentation/xctest/xcuiapplication/2877401-state
这就是您应该像在自己的答案中那样使用 wait
函数的原因
https://developer.apple.com/documentation/xctest/xcuiapplication
https://developer.apple.com/documentation/xctest/xcuiapplication/2921487-wait
我有一个 XCUITest 需要将应用程序置于后台。我的理解是,当按下主页按钮时,应用程序将进入后台,我将其编码为:
XCUIDevice.shared.press(.home)
sleep(2)
XCTAssertEqual(app.state, .runningForeground)
但是,正如断言所述,该应用似乎 运行 在前台。这是我的错误实施吗?
正在替换...
sleep(5)
XCTAssertEqual(app.state, .runningForeground)
与...
let background = app.wait(for: .runningBackground, timeout: 5)
XCTAssertTrue(background)
已解决问题。
我想我必须明确地等待预期的状态发生。
iOS 应用程序不会立即进入后台——它们有时间保存数据以防应用程序将来被终止。 https://developer.apple.com/documentation/uikit/app_and_environment/managing_your_app_s_life_cycle https://developer.apple.com/documentation/uikit/app_and_environment/scenes/preparing_your_ui_to_run_in_the_background
此外 .state
returns 结果是异步的。在讨论中阅读更多内容
https://developer.apple.com/documentation/xctest/xcuiapplication/2877401-state
这就是您应该像在自己的答案中那样使用 wait
函数的原因
https://developer.apple.com/documentation/xctest/xcuiapplication
https://developer.apple.com/documentation/xctest/xcuiapplication/2921487-wait