美文网首页iOS开发
关于iOS单元测试几点Tips

关于iOS单元测试几点Tips

作者: 火星抄手 | 来源:发表于2017-02-08 22:55 被阅读407次

相关文章:

1、走出 iOS 单元测试的困境
2、iOS单元测试--百度Hi iOS团队技术周报

一、单元测试有什么好处?

单元测试使用前后对比.png
  1. 单元测试使工作完成的更轻松
  1. 经过单元测试的代码,质量能够得到保证
  2. 单元测试发现的问题很容易定位。
  3. 修改代码犯的错,经过单元测试易发现
  4. 单元测试可以在早期就发现性能问题
  5. 单元测试使你的设计更好
  6. 大大减少花在调试上的时间

二、作为菜鸟我用单元测试测什么?

既然单元测试这么多好处,作为菜鸟我能做什么呢?

◆ 不是所有的方法都需要测试。
  例如:私有方法不需要测试!只有暴露在 .h 中的方法需要测试!面向对象有一个原则:开闭原则!
◆ 所有跟 UI 有关的都不需要测试,也不好测试。
  把业务逻辑 代码封装出来!变成可以测试的代码,让程序更加健壮!
◆ 一般而言,代码的覆盖度大概在 50% ~ 70%

四、那单元测试代码覆盖率又是什么鬼?

单元测试代码覆盖率如何统计的呢?如果一个新建的单元测试想要查看显示代码覆盖率,要怎么做呢?

1、修改test target的Build Setting中Generate Test Coverage Files 和Instrument Program Flow为YES;
2、在test target的Build Phases中的Compile Sources中添加需要被测量代码覆盖率的文件(.m,.mm)。
注意:不需要测量代码覆盖率之前,test target中只需要包含。

AFNetworking单元测试代码覆盖率.png

如上图,一旦这个测试通过了,你就能知道 checkWord 这个方法,至少有一条路径是对的。但你不知道的是,还多多少没有被测试到。这就是code coverage这个工具的好处。当你打开code coverage tab后,你可以清楚的看到测试的覆盖情况。他们按找 target, file, function 进行了自动分组。

打开Xcode左边窗口的Report Navigator面板,选中你刚运行的测试。然后在tab中选中 Coverage。这会展示一个你的类、方法的列表,并标示出每个的测试覆盖率。如果你将鼠标悬停在checkWord这个方法上,你可以看到测试的覆盖率是28%。双击方法的名字,Xcode会打开类的代码,并且看到code coverage的情况。

三、如何建单元测试环境呢?

关于如何建单元测试环境,很多文章都有描述,而且都有操作配图,可以自行查阅。相关文章-单元测试入门.
包括:
1、 单元测试的运行;
2、单元测试框架说明;
3、单元测试简单案例的实践。

注意:有第三方依赖的,单元测试也要配置依赖环境。

相关文章

  • 关于iOS单元测试几点Tips

    相关文章: 1、走出 iOS 单元测试的困境2、iOS单元测试--百度Hi iOS团队技术周报 一、单元测试有什么...

  • iOS开发——单元测试

    iOS开发——单元测试 iOS开发——单元测试

  • 单元测试

    内容 单元测试 参考文章: [iOS单元测试系列]单元测试框架选型 iOS单元测试:Specta + Expect...

  • iOS资源

    iOS开发200个tips总结(一) iOS开发200个tips总结(二) iOS中NSFileManager文件...

  • Widget小组件如何自适应高度

    OneSwift - iOS Tips Based On Swift 一位用户@NaThan INN 反馈了关于W...

  • 【开发技巧】单元测试

    iOS XCTest单元测试 iOS开发:XCTest单元测试(附上一个单例的测试代码) [iOS单元测试系列]单...

  • 2019-08-28

    浅谈iOS单元测试 iOS单元测试从入门到应用 - 简书

  • iOS 11 适配以及Xcode 9小Tips

    iOS 11 适配以及Xcode 9小Tips iOS 11 适配以及Xcode 9小Tips

  • 如何在应用中添加图标更换功能

    OneSwift - iOS Tips Based On Swift 接之前关于主题的分享,主题满足了用户界面自定...

  • iOS单元测试使用

    关于iOS单元测试 单元测试是针对程序模块来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。进行单元测试...

网友评论

  • PotterSun:如果你写了多个测试类 如A.m B.m C.m cmd+U后 它默认执行顺序是A->B->C 有没有办法改变这个执行顺序 如改成 A->C->B?
    PotterSun:@Haofree 这个是一个测试类里的多个测试方法,用这个方法特别好,我想问的是,如果有多个测试类,这些类的前后调用顺序,有没有办法自己定义,期待作者的答复
    火星抄手:关于测试函数执行的顺序:以函数名中test后面的字符大小有关,比如:
    -(void)test001XXX会先于-(void)test002XXX执行;
    可以参考看看这篇文章:http://yulingtianxia.com/blog/2014/04/28/iosdan-yuan-ce-shi-xctest/
  • YxxxHao:说真的,简单测试并不是私有方法就不测试的
    火星抄手:这个需要学习,交流:pray:

本文标题:关于iOS单元测试几点Tips

本文链接:https://www.haomeiwen.com/subject/kkbbittx.html