ios - 如何对 UITableView 进行单元测试?

标签 ios swift uitableview unit-testing

我正在尝试对 UITableView 进行单元测试,但我不知道该怎么做。我有一个 View Controller ,其中有一个 TableView 。每个原型(prototype)单元格都有一个自定义的表格 View 单元格类,并附有 socket 。

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

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

对于测试组件,我的问题在某种意义上是不同的,我想更改传入它的数据。因此,我不想从 API 读取数据,而是想正常读取数据,但我不知道如何更改 viewDidLoad 以使用本地对象而不是网络对象。

最佳答案

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

编辑:对此进行更多阐述。我更喜欢只将信息存储在与其外观、位置等相关的 View 中。这通常可以声明式编程此外, View 将具有将用户交互从 UI 框架转换为界面所需的最小功能为您的演示者(如果使用 MVP)或 Controller (如果使用 MVC)。然后可以通过相同的界面对演示器或 Controller 进行测试,以满足您的需求。

我还发现,如果您倾向于创建新 View 而不是重新呈现现有 View ,则可以避免很多复杂性和错误。这并不总是可行的。但是当它出现时, View 所做的动态工作要少得多,而只是显示本应传递到其构造函数中的模型。

关于ios - 如何对 UITableView 进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42998977/

相关文章:

iphone - 如何将模态视图添加到当前 View Controller 上?

ios - 更改导航栏标题字体 - 不同

ios - UIButton 的自定义类并在 StoryBoard 中显示它也有枚举

ios - 计算 Firebase 数据库子项并显示

iphone - 在表格 View 部分标题中垂直居中 UILabel 文本

ios - 如果变量已声明,则 swift 变量类型在向下转换后不会改变?

ios - 在具有动态数据的 WidgetKit 中,如何为新的 WidgetKit 指定默认的 IntentConfiguration?

swift - 为什么在 Swift 中对泛型协议(protocol)的元组进行类型别名允许我将其视为非泛型协议(protocol)?

arrays - Swift 中 "cons"运算符/函数/方法在哪里?

iOS7 - TableView 标题中的多行文本?