避免在 XCTest UI 测试中恢复应用程序状态
Posted
技术标签:
【中文标题】避免在 XCTest UI 测试中恢复应用程序状态【英文标题】:avoiding app state restoration in XCTest UI Testing 【发布时间】:2020-02-03 18:19:03 【问题描述】:我正在为基于文档的 macOS 应用程序编写 UI 测试。
测试通过单击启动屏幕窗口中的按钮打开一个模板文档(很像“欢迎使用 Xcode”窗口)。这适用于第一次测试运行。但是由于之前打开的文档覆盖了初始屏幕窗口,因此后续启动会因状态恢复而受阻。
如何在运行 Xcode UI 测试时禁用状态恢复?
我在我的应用程序目标中禁用了状态恢复(“启动应用程序而不恢复状态”),效果很好。但这不会延续到测试目标,即使选中“使用运行操作的参数和环境变量”也是如此。
我也尝试在测试结束时关闭之前打开的文档,但是当我在保存对话框中单击“删除副本”时,“记录 UI 测试”没有记录任何内容。
【问题讨论】:
您希望何时清理应用状态? 【参考方案1】:这在测试的setUp
函数中起到了作用:
let app = XCUIApplication()
app.launchArguments.append(contentsOf: ["-ApplePersistenceIgnoreState", "YES"])
app.launch()
您也可以直接在命令行上附加等效参数,例如:
/Applications/Example.app/Contents/MacOS/example -ApplePersistenceIgnoreState YES
【讨论】:
以上是关于避免在 XCTest UI 测试中恢复应用程序状态的主要内容,如果未能解决你的问题,请参考以下文章
XCTest:在 UI 测试类的 NSUserdefaults 中未检索到值
在 XCTest UI 测试中单击 NSToolbarItem