快速进行UI测试— iOSSnapshotTestCase
以前称为FBSnapshotTestCase和 目前由Uber维护, 此框架创建UIView的参考图像,并使用它们来测试同一视图的后续图像以检查它们是否相同。
uber / ios快照测试案例
ios-snapshot-test-case – iOS的快照视图单元测试
github.com
我发现了几个用例:
用代码编写UI
对我来说,这是一个很大的机会。 在我的团队中,我们已经不再使用xib和Storyboard,而是以编程方式创建所有UI。
一个明显的缺点是,直到运行应用程序,您才能看到UI的外观。
特别是在较大的应用程序中,这尤其麻烦,尤其是当您要查看的屏幕嵌套在导航堆栈的深处时。
通过使用iOSSnapshotTestCase,您可以通过运行测试并检查参考图像来检查视图。
UITesting
没有人喜欢编写测试。 那里有很多文章概述了烦恼 。 我发现使用iOSSnapshotTestCase创建测试相对简单。
在初始设置之后 ,通过子类化FBSnapshotTestCase而不是XCTest来创建测试。
然后将recordMode = true
设置为允许在运行测试时生成参考图像。
最后创建一个实例化视图的测试,然后调用FBSnapshotVerifyView()
。
这是一个例子:
现在已经创建了参考图像,设置recordMode = false
。 现在,如果未对视图进行任何更改,则测试将通过!
使用FBSnapshotVerifyView()
,可以传递几个参数以提供更多控制。 如以下内容:
FBSnapshotVerifyView(view, identitifer: "simpleView", tolerance: 0.5)
在引擎盖下,它通过将视图渲染为两个CGContextRefs来比较视图。 然后,使用C函数memcmp()
查看它们的内存,以确保它们相等。
自从遇到这个框架以来,我的工作流程已大大简化 。 我在大型应用程序上工作,并且能够在每次我要检查UI更改时不编译和运行该应用程序,从而节省了很多时间 。
这是一个简单但功能强大的工具,我建议人们尝试一下!