XCUITest 到后台应用程序返回错误的 XCUIApplication.State
Posted
技术标签:
【中文标题】XCUITest 到后台应用程序返回错误的 XCUIApplication.State【英文标题】:XCUITest to background the app is returning the wrong XCUIApplication.State 【发布时间】:2020-07-16 10:08:28 【问题描述】:我有一个 XCUITest,它要求将应用程序置于后台。我的理解是,当按下主页按钮时,应用程序将被置于后台,我已将其编码为:
XCUIDevice.shared.press(.home)
sleep(2)
XCTAssertEqual(app.state, .runningForeground)
但是,正如断言所述,应用程序似乎在前台运行。这是我的错误实现吗?
【问题讨论】:
【参考方案1】:更换...
sleep(5)
XCTAssertEqual(app.state, .runningForeground)
与...
let background = app.wait(for: .runningBackground, timeout: 5)
XCTAssertTrue(background)
已解决问题。
我想我必须明确地等待预期的状态发生。
【讨论】:
【参考方案2】: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
异步返回结果。阅读更多讨论
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 到后台应用程序返回错误的 XCUIApplication.State的主要内容,如果未能解决你的问题,请参考以下文章
更新到 Xcode 10 后 XCUITest 的测试目标似乎不起作用