测试已测试 | ✓ |
Lang语言 | Obj-CObjective C |
许可证 | BSD |
发布最新发布 | 2016年10月 |
由dstnbrkr、Dustin Barker、Patrik Tomas Chamelo、Facebook, Inc.维护。
“快照测试用例”抓取一个配置好的 UIView
或 CALayer
,并使用 renderInContext:
方法获取其内容的一个图像快照。它将此快照与存储在您源代码仓库中的“参考图像”进行比较,如果不匹配则使测试失败。
在 Facebook,我们编写了很多 UI 代码。您可以想象,每种类型的信息流都是使用 UIView
的子类渲染的。有很多边缘情况我们需要正确处理。
逻辑代码很容易测试,但测试视图就不是那么明显了。您可以做很多矩形断言,但这些很难理解或可视化。查看图像差异显示您可以确切看到发生了什么变化,以及用户将如何看到。
我们开发了 FBSnapshotTestCase
来使快照测试变得简单。
FBSnapshotTestCase
而不是 XCTestCase
。FBSnapshotVerifyView
。-setUp
方法中将 self.recordMode = YES;
运行一次测试。(这将在磁盘中创建参考图像。)FBSnapshotVerifyLayer
支持对 CALayer
的支持。usesDrawViewHierarchyInRect
处理像 UIVisualEffect
、UIAppearance
和大小类这样的情况。isDeviceAgnostic
允许将设备型号(iPhone、iPad、iPod Touch 等)、操作系统版本和屏幕尺寸附加到图像(允许为不同的操作系统和设备拥有相同的“快照”的多个测试)。您的单元测试必须是“应用测试”,而不是“逻辑测试”。(也就是说,必须在模拟器中运行,以便它能够访问UIKit。)在Xcode 5及以后的版本中,新项目只提供应用测试,但旧项目将为两种类型提供独立的目标。
FBSnapshotTestCase
是由 Facebook 的 Jonathan Dann 编写的,由 Todd Krabach 做出重大贡献。
FBSnapshotTestCase
采用 BSD 许可证。请参阅 LICENSE
文件。