避免在 XCTest UI 测试中恢复应用程序状态

avoiding app state restoration in XCTest UI Testing

我正在为基于文档的 macOS 应用编写 UI 测试。

测试通过单击初始屏幕中的按钮打开模板文档 window(很像 "Welcome to Xcode" window)。这适用于第一个测试 运行。但是由于先前打开的文档覆盖了闪屏 window.

,状态恢复阻碍了后续启动

如何在 运行ning Xcode UI 测试时禁用状态恢复?

我在我的应用程序目标 ("Launch application without state restoration") 中禁用了状态恢复,效果很好。但这不会转移到测试目标,即使选中 "Use the Run Action's arguments and environment variables"。

我也试过在测试结束时关闭之前打开的文档,但是当我在保存对话框中单击 "Delete Copy" 时 "Record UI Test" 没有记录任何内容。

这在测试的 setUp 函数中起到了作用:

let app = XCUIApplication()
app.launchArguments.append(contentsOf: ["-ApplePersistenceIgnoreState", "YES"])
app.launch()

您也可以直接在命令行追加等效参数,例如:

/Applications/Example.app/Contents/MacOS/example -ApplePersistenceIgnoreState YES