SwiftSnapshotTesting
本项目的目的是简化iOS上的UI测试。
SwiftSnapshotTesting
帮助您通过几行代码就检查应用的UI。再也不需要手动管理参考图像了。
此框架能够执行以下操作:
- 捕获全屏截图、仅状态栏或其他
XCUIElement
的屏幕截图 - 在您的Mac上记录截图
- 使用
Metal
比较和突出显示新截图与之前记录的截图之间的差异
在内部,SwiftSnapshotTesting
在进行快照比较时使用 MTLTextures
。它还使用 Resources Bridge Monitor
应用来读取和写入Mac上的文件。
需求
- Swift
5.2
- iOS
11.0
通过Cocoapods安装
pod 'SwiftSnapshotTesting'
如何使用
-
创建
SnapshotTestCase
的子类class MyCoolUITest: SnapshotTestCase { ...
-
在选择您的Mac上的文件夹以存储引用快照时,通过覆盖
snapshotsReferencesFolder
变量来实现override var snapshotsReferencesFolder: String { "/Path-To-Snapshots-Folder/" }
-
断言UI元素
assert(element: XCUIElement, testName: String, ignore rects: Set<CGRect>, configuration: Configuration, recording: Bool) throws
element
- 要比较的元素。testName
- 测试名称。它将被用于引用图像文件的名称rects
- 忽略的rects(可能的子视图框架)。configuration
目前的测试配置。recording
- 通过设置此参数为true
,您将记录引用快照。通过设置为false
,您将比较元素与之前记录的快照。
-
断言截图
assert(screenshot: XCUIScreenshot, testName: String, ignore ignorables: Set<Ignorable>, configuration: Configuration, recording: Bool) throws
screenshot
- 要测试的截图。ignorables
- 要忽略的UI元素。Ignorable
可以是XCUIElement
、自定义CGRect
或预定义的.statusBar
。
XCTAttachment
在每次断言测试之后,SnapshotTestCase
都提供了一个包含快照及其对应参考之间每像素L2距离的附件和带有高亮差异的 MTLTexture
。您可以使用 MTLTextureViewer
查看差异。
示例
您可以在 这里 找到 SwiftSnapshotTesting
在 ImageFlip
仓库中使用的示例。
许可协议
MIT