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

时间:2017-04-04 14:56:38

标签: nsopenpanel xctestcase

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

有人能指出我有关XCTestCases是否甚至可以与NSSavePanel交互的任何细节吗?代码示例会更好,但文档也会很棒!

1 个答案:

答案 0 :(得分:-1)

是的,可以。

利用XCUIApplication

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

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

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

用户界面录制

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

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

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

enter image description here