在项目组内做UITest几个月了,输出才是真正的提高嘛,总结了一下,写出来做一个UITest的讲解.
首先说一下目的:UITest,可以模拟人的操作,当然还可以使用第三方用以模拟网络请求,再加上数据库操作等,实现完全的自动化全流程测试(大概是这么个词),在这个过程中可以设定网络返回的数据,设定数据库中的值等等来测试各种case. 下班的时候Command+U一下就可以跑所有的测试类测试case,早上来就可以收割问题了.
下面从建类开始讲.
1,UITest类的创建.
如图所示,在工程主文件夹的相应UITest文件夹下添加UITestCaseClass,选择swift建立类.类名在开发的时候,一般以viewController为单位建立相应的test类,类名一般取XXXViewControllerUITests,方便查找和跑相应的测试.
类建好后,样子如下图(注意当前UITest类的target是不是UITest,有些时候建完默认是UnitTest,要手动点回来,否则跑不起来):
当前测试类函数的调用顺序讲一下:
每一个testXXX测试函数,都会调用一次setUp()函数,然后运行自身,最后调用tearDown()函数.默认在setUp函数里要预制你的数据(数据库写入等等),调用.launch函数启动APP,在tearDown()函数里清除掉你的数据,关掉APP.
setUp里的.launch()函数是app启动.我一般都删掉这个,自定义一个启动函数放到各个test函数里,这样就可以在启动的时候在自己的测试函数里加载针对每个测试函数自己定义的数据库文件网络返回数据文件等等.另外,我司的项目中,测试数据都写在realm的内存数据库中,所以没有写清除数据的代码.这些先不关注,先来看看重点的testExample函数.
2,测试函数testXXX
testExample函数是苹果举的一个例子.所有测试函数都要类似testXXX,以test开头,这样测试函数才可以跑起来,函数前面才会有那个菱形的小框.很多时候系统反应慢,建完函数build一下就有了.