快速进行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更改时不编译和运行该应用程序,从而节省了很多时间

这是一个简单但功能强大的工具,我建议人们尝试一下!