如何对UITableView进行单元测试?

时间:2017-03-24 12:00:43

标签: ios swift uitableview unit-testing

我正在尝试单元测试UITableView,但我不知道该怎么做。我有一个视图控制器,其中有一个表视图。每个原型单元都有一个自定义表视图单元类,其上附有插座。

现在,我想分别测试这两个组件。首先,我想通过单独创建原型单元来测试表视图单元格内的数据是否正确。其次,我想用随机数据填充我的表视图并测试对象是否正确等。我怎样才能做到这两个?

为了测试单元本身,我不知道如何单独创建单元并通过向其发送数据来检查它。因此,我的自定义类具有将数据设置为单元格的小功能,而不是直接将数据分配给标签,按钮,图像。我想测试那些功能。但是如果我没有渲染它,我就无法检查它。

为了测试组件,我的问题是不同的,我想改变即将发生的数据。因此,我不想从API中读取数据,而是想要正常阅读,但我不知道如何更改viewDidLoad以使用本地对象而不是网络对象。

2 个答案:

答案 0 :(得分:6)

简短的回答是:你不是。作为一般经验法则,在单元测试中,您应该测试业务逻辑,而不是UI。一般来说,视图应该没有功能,因此没有理由对它们运行单元测试。

编辑:详细说明一下。我更喜欢仅将信息存储在与其外观,定位位置等相关的视图中。这通常可以声明性地编程。此外,视图将具有最小的功能必须将用户交互从UI框架转换为演示者(如果使用MVP)或控制器(如果使用MVC)的界面。然后,演示者或控制器可以通过相同的界面测试您心脏的内容。

如果您开发了创建新视图的首选项而不是重新呈现现有视图,我还发现您可以避免很多复杂性和错误。这并不总是可行的。但是当它出现时,视图的动态工作要少得多,而只是显示传递给构造函数的模型。

答案 1 :(得分:1)

我也面临同样的问题......直到现在还没有找到任何解决方案.. !!

但我收到了这个链接< unit tests with TableView >

虽然它在Objective-C中我的意思是代码..但是一旦你阅读了代码,你自己就可以在Swift 3中编写相同的内容..否则你可以尝试在线转换器..

另外,通过参考上面的文章,我能够编写一些工作正常的测试用例。

希望它有所帮助。