Swift 单元测试参考

什么是单元测试

单元测试: 针对程序模块的最小单元来进行正确性检验的测试工作。对于面向对象编码来说,最小单元就是方法
其实就是验证一些基本规则。
基本原则

命名

使用领域命名,用命名直接告诉别人你在测试什么,测试方法某个方法就用test+方法名, 测试操作就用test+操作

其中一个测试文件应该只有一个测试类。

编写短测试

单元测试要短而清晰,目标只有一个,一个测试就像一个细胞

一个Case只测一种情况

一个测试尽量只有一个断言,这样测试目的就很清晰。

可能我们调用的一个API内部有一个if…else…。我建议if一个case,else一个case。分两个不同的case来作测试.这样每个case就很清晰自己在测试什么东西。而如果全部杂糅在一个case中,可读性会降低不少,而且case体积也会变得相对大很多,因为你要Given-When-Then两次。更不建议在case中写for循环验证。有人说我的测试目标函数中有很多if…else…,那么我觉得你应该重构下你的设计了

测试方法遵循Given-When-Then

在测试方法内,一般就是三大步:准备数据 - 操作 - 结果


- (void)testSomeFunction{//given: 数据准备_sut.collectionType = 1;NSIndexPath *path1 = [NSIndexPath indexPathForRow:1 inSection:1];//when: 操作BOOL needToShow1 = [_sut needToShowRow:path1];//then: 结果/断言assertThatBool(needToShow1,isTrue());}

不要链接测试

每个测试应该互相独立,不应该互相依赖。

我经常看到人们有链接测试的习惯。这通常是因为准备工作非常困难。但这不是一个解决方案。在测试链中,依赖于其他测试的测试之所以失败,大多数情况下都是因为前面的测试失败了。在这种情况下,你可能会修改代码让测试通过,但你可能会因为测试不完备而引入没有验证到的缺陷。

How

参考 iOS-单元测试详解 单元测试操作和基本理论

Why

为了你以后的工作,请写单元测试

单元测试覆盖率

默认情况下,Xcode不会收集测试范围,但我们可以在设置中很容易打开。首先同时按住

⌥+⌘+U键,调出当前Target的测试设置。然后打开Options选项卡,并选中Code Covetage复选框,如下所示:

这样就设置好了。以后我们每次运行测试后都会生成单元测试覆盖率数据。一种方法是打开Report Navigator(⌘+9)查看,现在将显示每个测试会话的覆盖率报告:

我们还可以在编码窗口显示覆盖率数据。要启用此功能,点击右上角的 Adjust Editor Options,然后点击Code Coverage。平时如果感觉影响开发也可以关闭。开启后你能看到你写的代码哪些被单元测试覆盖到了:

如上图所示,所有尚未测试到的代码右边都被红色突出显示,并且所有代码迭代次数也将显示出来。

参考:

  1. iOS-单元测试详解 单元测试操作和基本理论
  2. 编写良好的单元测试 单元测试的理解,提供该怎么单元测试
  3. 单元测试编码规范 单元测试该怎么命名和基本步骤(Given - When - Then)

Swift 单元测试相关推荐

  1. xcode swift 单元测试 test

    XCTest是苹果官方的测试框架,是基于OCUnit的传统测试框架,测试编写起来非常简单. 参考文档:iOS Unit Testing and UI Testing Tutorial | Kodeco ...

  2. swift单元测试(三)XCTest之UI测试UITest

    继上篇文章介绍了XCTest中的单元测试,这片土地主要介绍下苹果官方测试框架XCTest中的的UITest. 1.UITest简介 UI Tests是一个自动测试UI与交互的Testing组件.UI ...

  3. swift 引用swift_Swift Swift中的单元测试:基础知识

    swift 引用swift In this first part of the Unit Testing in Swift series, we will cover how to add a uni ...

  4. 27个提升效率的iOS开源库推荐

    2019独角兽企业重金招聘Python工程师标准>>> 我热爱开源,更喜爱那些花费宝贵的业余时间来创造奇迹的开发者们,感谢他们将自己辛苦劳动的成果无偿分享给大家.开源作者和贡献者们, ...

  5. 27个iOS开源库,让你的开发坐上火箭吧

    本文翻译自Medium,原作者是Paweł Białecki,原文 27个iOS开源库,让你的开发坐上火箭吧 你不会想错过他们,真的. 我爱开源. 并且我喜欢开发者们,把他们宝贵的私人时间用来创造神奇 ...

  6. 老司机 iOS 周报 #49 | 2018-12-24

    老司机 iOS 周报,只为你呈现有价值的信息. 你也可以为这个项目出一份力,如果发现有价值的信息.文章.工具等可以到 Issues 里提给我们,我们会尽快处理.记得写上推荐的理由哦.有建议和意见也欢迎 ...

  7. ios开发——27个iOS开源库,让你的开发坐上火箭吧

    本文翻译自Medium,原作者是Paweł Białecki,原文 27个iOS开源库,让你的开发坐上火箭吧 你不会想错过他们,真的. 我爱开源. 并且我喜欢开发者们,把他们宝贵的私人时间用来创造神奇 ...

  8. iOS开发——27个开源库,让你的开发坐上火箭吧

    27个iOS开源库,让你的开发坐上火箭吧 你不会想错过他们,真的. 我爱开源. 并且我喜欢开发者们,把他们宝贵的私人时间用来创造神奇的东西,然后他们会和其他人分享并且不求回报.开源作者和贡献者,你们是 ...

  9. IOS 第三方开源库汇总

    IOS 第三方开源库汇总 1. 常用开源库简介 2. 统计工具 3. 数据埋点工具 4. 社交分享集成工具 5. 网络通信,网络数据工具 6. 音视频处理工具 7. 图像处理工具 8. 云存储 9. ...

最新文章

  1. 《javascript语言精粹》读书笔记(一)
  2. 为何我的BLOG不能DIY?
  3. 自己动手搭建DNS服务器
  4. Day11多态部分-3
  5. 使用python简单连接并操作数据库
  6. runtime无法执行grep_如何使管道使用Runtime.exec()?
  7. Android反编译分析工具
  8. 上海科技大学计算机研究生调剂,2021年上海科技大学考研招生调剂信息
  9. 多说评论如何显示最近访客
  10. 祝贺swm8023刷HDU-Steps登顶+突破新Section,14.2不是传说中的高级计算几何,而是数学~~...
  11. 全球及中国电子级硅烷(SiH4)行业动态分析及发展前景预测报告2021~2026年
  12. 明源售楼系统技术解析 房源生成(二)
  13. 图形学中走样(Aliasing)和反走样(Antialiasing)
  14. [机缘参悟-62]:《兵者,诡道也》-3-三十六计解读-敌战计
  15. android edittext 输入法表情,Android开发中EditText禁止输入Emoji表情符
  16. Echarts绘制Tree树图的涟漪效果effectScatter
  17. IOS面试攻略(1.0)
  18. 作业一 统计软件简介与数据操作
  19. NGUI:HUD Text
  20. 正则表达式检测电子邮件_电子邮件中的垃圾邮件检测

热门文章

  1. 电脑编程教学_“人工智能”将无处不在,我的孩子要不要学习电脑编程?
  2. Micropython实例之TPYBoardv102开发板DIY照相机
  3. 图形上下文的栈操作(保存和恢复)
  4. Java算法试题--猜字母/杀人游戏
  5. Windows Server 2008 SVN 配置
  6. DevExpress z
  7. Google 公司的 Java 语言编写规范
  8. mac easy_install 安装插件失败
  9. ITextSharp使用说明
  10. ABP-JavaScript API