Iva*_*nov 2 tdd uiviewcontroller uiview ios swift
正如预期的那样,在使用视图层遵循 TDD(即首先编写测试)时,我通常会遇到困难。
也就是说,为了观察或触发某些可见的更改(布局或样式),我需要公开视图的内部结构。这打破了封装并允许客户端代码执行诸如myView.label.text = "User".
为了避免这种情况,我要么向UIView类添加 getter 方法:
var userName: String{ return label.text }
Run Code Online (Sandbox Code Playgroud)
或者做一些仅添加到测试框架的扩展:
extension MyView{
//avoids making a getter just for the sake of testing, while keeping it private and interchangeable
var userName : String{
return (viewWithTag(someLabelTage) as! UILabel).text
}
Run Code Online (Sandbox Code Playgroud)
另一种方法是跳过 TDD 工作流程(即功能完成后手动测试)并添加快照测试(请参阅https://github.com/pointfreeco/swift-snapshot-testing)以增加覆盖率并具有安全性重构时.net。
考虑到这一切,我想知道是否有任何其他模式或方法可以用来提高效率,同时保持对代码的信心。
我不是 Swift 专家,但无论哪种语言/框架,有些事情告诉我你实际上让你的任务变得更加困难。
在使用视图层遵循 TDD 时,我通常会遇到困难。
这是预料之中的。视图支持很简单并且根本没有行为(即域逻辑)。它应该是简单的用户交互,并将数据绑定到视图中的控件。因此,在我看来,您不需要 TDD 或者围绕视图进行更精确的单元测试。尝试为视图编写单元测试不会获得太多价值。
可以使用 UI 测试框架(例如 Selenium)或您自己的 UI 测试框架(用于测试用户交互)更有效地测试您的视图。这样,与尝试对视图层进行 TDD 相比,您可以获得更多的投资回报 (ROI)。
| 归档时间: |
|
| 查看次数: |
537 次 |
| 最近记录: |