版本 1.0 使用UITesting - 因此这不再适用。
Snapshot 真是棒极了。
然而它使用的是 Apple 的 UIAutomation,这是一个脆弱且痛苦的框架(还有另一件事要学习)。
如果您想为 Snapshot 驱动您的应用 - 并且不在乎 UIAutomation 是否合适,那么这个类就是为您准备的。
注意:这并不是“真正的”UIAutomation。这不是测试您代码的方法,而是向您简单地脚本化应用以生成截图。
如 Snapshot 文档中所述,请确保您已定义 SNAPSHOT 为真。
例如,在您的 Snapfile 中
custom_build_args "GCC_PREPROCESSOR_DEFINITIONS='$(inherited) SNAPSHOT=1'"
或者使用前缀文件并
#define SNAPSHOT true
在您的 App Delegate 中安装帮助器
这将在您的主窗口视图背后安装一个 1 像素的文本字段。UIAutomation 可以然后更改文本字段以触发通知。
#import <HSUIAutomationCheat/HSUIAutomationCheat.h>
(and then in application:didFinishLaunchingWithOptions:)
#ifdef SNAPSHOT
[HSUIAutomationCheat installForWindow:mainWindow];
#endif
将一个额外的帮助函数添加到 SnapshotHelper.js 中
function sendNotification(name) {
UIATarget.localTarget().frontMostApp().windows()["SNAPSHOT_WINDOW"].textFields()["SNAPSHOT_FIELD"].setValue(name);
}
从您的 snapshot.js 发送通知
在任何 snapshot.js 中,您都可以向您的应用发送一个通知
sendNotification("SnapDisplayMyScreen");
在您的应用中响应通知
在您的应用中,一个名为 @"SnapDisplayMyScreen" 的标准 NSNotification 会被广播。
您可以使用 SNAPSHOT 定义来通过自定义代码处理此事件
#ifdef SNAPSHOT
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(doSomething:)
name:@"SnapDisplayMyScreen"
object:nil];
#endif
使用 CocoaPods 进行安装
pod 'HSUIAutomationCheat', '~> 0.0'
或者下载该类并将其添加到您的项目中。