V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
finab
V2EX  ›  iDev

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

  •  
  •   finab ·
    Finb · 2015-03-31 15:59:02 +08:00 · 3726 次点击
    这是一个创建于 3312 天前的主题,其中的信息可能已经有所发展或是发生改变。
    通常调用API不需要测试,服务器自己测了
    大部分需要测试的都是ViewController,是否有必要为每个ViewController写单元测试?又该怎么写?
    对UITableView的Delegate测试是不是会花很多时间呢?而且这块是经常会被修改的,可能产品经理灵机一动,一个delegate就得大变样,以前写的单元测试不就是无用功了么?

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

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

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

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

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

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

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

    具体怎么测我建议你去找开源项目看看,大多数开源项目都有测试代码的。看别人代码学得很快的。
    kepenj
        8
    kepenj  
       2015-04-01 13:51:52 +08:00
    同问,个人现在也就是在部分数据处理里面会用到。个人感觉 就是测试部分“点”方面可以用到。
    jianzong
        9
    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
        10
    vincentxue  
       2015-04-01 17:23:39 +08:00
    @jianzong 人又帅技术又牛逼,膜拜!
    jianzong
        11
    jianzong  
       2015-04-01 17:37:52 +08:00
    @vincentxue :doge:
    finab
        12
    finab  
    OP
       2015-04-01 18:23:55 +08:00
    @vincentxue 嗯,今天在github开了个项目,打算训练下TDD写iOS,工作中还是暂时先放下不写吧

    @jianzong 感谢,@vincentxue推荐了那个网站,看了目录,会慢慢学习~目前我自己写的控件或者model都很容易做单元测试,但是ViewController 和 UITableView delegate 就找不到下手位置了。。
    ciwonderful
        13
    ciwonderful  
       2015-04-02 18:01:45 +08:00
    当然有必要。
    detecti1
        14
    detecti1  
       2015-04-03 06:27:33 +08:00
    楼上各位能否帮忙给个例子,比如github上的某某具体项目的单元测试,尤其是ViewController的单元测试写的好的,让我学习一下... 对这块实在是束手无策,也就给Model简单写写,其他的都没头绪 >.<
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1473 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 23:55 · PVG 07:55 · LAX 16:55 · JFK 19:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.