iOS 下的单元测试是否有必要呢?

2015-03-31 15:59:02 +08:00
 finab
通常调用API不需要测试,服务器自己测了
大部分需要测试的都是ViewController,是否有必要为每个ViewController写单元测试?又该怎么写?
对UITableView的Delegate测试是不是会花很多时间呢?而且这块是经常会被修改的,可能产品经理灵机一动,一个delegate就得大变样,以前写的单元测试不就是无用功了么?

大家开发iOS如果做单元测试的话?一般对什么做单元测试呢? 希望大家多多指点
3833 次点击
所在节点    iDev
14 条回复
vincentxue
2015-03-31 17:48:25 +08:00
一句话说完,非常有必要。

如果你公司的测试会写 iOS 的各种单元测试最好了,但是很多小公司的测试人员只会玩软件找 bug,不会编写测试代码,所以多数情况下都得我们自己写单元测试。

如果你不会写单元测试或者说不知道测什么,建议你去看看 objcoi 写测试的相关文章,再看看 Github 优秀开源项目的测试代码,这个过程大概两三个钟你就可以对单元测试有一个了解,可以编写自己的测试代码了。

如果你的代码架构不好,那写单元测试是比较痛苦的。

但是,愿意写单元测试的开发者也是比较少的。。。。大家都比较懒。
loveuqian
2015-03-31 18:06:29 +08:00
API给服务器测的真好

我继续去写(ctrl+c ctrl+v)我的接口测试脚本了
finab
2015-03-31 18:39:57 +08:00
@vincentxue 看了一些,有写单元测试的想法。
但是真的想开始对一些代码写单元测试时,发现ViewController部分很难测,这部分又占代码总量的很大一部分
finab
2015-03-31 18:40:21 +08:00
@loveuqian 这种时候整个代码生成器如何?哈哈哈
vincentxue
2015-03-31 18:54:56 +08:00
@finab 你 ViewController 一般代码多少行 统计过没
finab
2015-03-31 19:02:03 +08:00
@vincentxue 有,大概500-1000行,主要是UITableView 代理方法和相关的按钮操作
我也偶尔将UITableView的代理方法提取出单独的文件来使用,

但是估计还是难以测试,而且我不知道哪些属于要测试的,不可能啥都要测吧
vincentxue
2015-03-31 19:22:43 +08:00
@finab 你这个 Controller 代码也太多了吧,是不是 VC 没有分清?我的大多数都在 200 行以内,超过 500 行 就不得了了。

具体怎么测我建议你去找开源项目看看,大多数开源项目都有测试代码的。看别人代码学得很快的。
kepenj
2015-04-01 13:51:52 +08:00
同问,个人现在也就是在部分数据处理里面会用到。个人感觉 就是测试部分“点”方面可以用到。
jianzong
2015-04-01 15:09:02 +08:00
自从写Ruby on Rails 项目接触TDD后,我就坚持在iOS项目中编写自动化测试代码了。

虽然一般iOS项目因为界面代码较多,往往不易于测试。其实只要项目架构清晰,iOS项目也可以易于测试。

对于Model以及View Model,使用测试驱动开发的办法,不仅能够有效降低开发时间,还能使项目代码更加可靠。

另外,楼上也提到objc.io,这一期读一下很有帮助:
http://www.objc.io/issue-15/
vincentxue
2015-04-01 17:23:39 +08:00
@jianzong 人又帅技术又牛逼,膜拜!
jianzong
2015-04-01 17:37:52 +08:00
@vincentxue :doge:
finab
2015-04-01 18:23:55 +08:00
@vincentxue 嗯,今天在github开了个项目,打算训练下TDD写iOS,工作中还是暂时先放下不写吧

@jianzong 感谢,@vincentxue推荐了那个网站,看了目录,会慢慢学习~目前我自己写的控件或者model都很容易做单元测试,但是ViewController 和 UITableView delegate 就找不到下手位置了。。
ciwonderful
2015-04-02 18:01:45 +08:00
当然有必要。
detecti1
2015-04-03 06:27:33 +08:00
楼上各位能否帮忙给个例子,比如github上的某某具体项目的单元测试,尤其是ViewController的单元测试写的好的,让我学习一下... 对这块实在是束手无策,也就给Model简单写写,其他的都没头绪 >.<

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/180596

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX