XCTestCase 保存文件? (记录 NSSavePanel)?

Posted

技术标签:

【中文标题】XCTestCase 保存文件? (记录 NSSavePanel)?【英文标题】:XCTestCase save file? (Record NSSavePanel)? 【发布时间】:2017-04-04 14:56:37 【问题描述】:

我正在尝试记录一个测试用例,其中 NSDocument 创建并保存文件(然后再次打开 + 验证内容)。问题是当我记录我的测试用例时,一旦启动 NSSavePanel,XCTestCase 记录就会停止。我试图搜索与保存/打开面板交互的测试用例示例,但我没有任何运气。

谁能告诉我有关 XCTestCases 是否可以与 NSSavePanels 交互的任何细节?代码示例会更好,但文档也会很棒!

【问题讨论】:

【参考方案1】:

可以。

利用 XCUIApplication

XCUIApplication 具有最小的 API,但有一些方法需要特别注意:

-launch - 默认情况下,新的 XCTestCase 模板在 -setup 中包含一行,用于实例化新的 XCUIApplication 并启动它。当 -launch 被调用时,它将终止任何先前运行的目标应用程序实例。这意味着默认情况下,您添加的每个测试用例都会在每个测试方法之前重新启动您的应用程序。您可以通过使用对仅启动一次的单一 XCUIApplication 的共享引用来避免这种情况,但是除了总体测试时间之外,这样做并没有太大优势。

-launchEnvironment - 允许控制在启动时传递给目标应用的自定义环境变量。这可用于(除其他外)设置自定义变量,您的应用可使用该变量来识别它何时作为自动化 UI 测试的目标运行。尽管这可能很有用,但应谨慎使用。你的 UI 测试不是很有帮助,除非他们执行与你的用户相同的代码。

界面录制

在 Xcode 7 中,Apple 添加了一个 Record UI Test 按钮,允许您单步执行您的 UI 并在您正在编辑的任何当前测试用例方法中为您记录这些操作。虽然这在理论上听起来很棒,但在实践中,我发现它当前的实现存在错误且不可靠。以下是使用它的一些提示:

慢动作移动 - 太快或连续快速执行点击和键盘按键可能会导致 Xcode 跳过其中的一些。

预期错误 - 在某些情况下,录制根本不起作用。单击 NSSavePanel 中的“不保存”按钮将记录一个带有转义 Unicode 字符的字符串,该字符不起作用。很多时候,录制会失败并显示如下一般错误消息。建议?谨慎地使用记录作为“从头开始”编写测试用例的起点。

【讨论】:

谢谢,但这实际上并没有回答与 XCTestCase 与系统 NSSavePanel 交互有关的任何问题?

以上是关于XCTestCase 保存文件? (记录 NSSavePanel)?的主要内容,如果未能解决你的问题,请参考以下文章

XCTestCase 不提供项目类

在位于 XCTestCase 的单独文件中的函数中捕获屏幕截图

XCTestCase 异步

如何将实例变量或属性添加到 XCTestCase?

IO9 上的 UI XCTestCase 无法播放

ios的单元測试OCUnit以及更新了之后的XCTestCase