Swift 单元测试
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。平时如果感觉影响开发也可以关闭。开启后你能看到你写的代码哪些被单元测试覆盖到了:
如上图所示,所有尚未测试到的代码右边都被红色突出显示,并且所有代码迭代次数也将显示出来。
参考:
- iOS-单元测试详解 单元测试操作和基本理论
- 编写良好的单元测试 单元测试的理解,提供该怎么单元测试
- 单元测试编码规范 单元测试该怎么命名和基本步骤(Given - When - Then)
Swift 单元测试相关推荐
- xcode swift 单元测试 test
XCTest是苹果官方的测试框架,是基于OCUnit的传统测试框架,测试编写起来非常简单. 参考文档:iOS Unit Testing and UI Testing Tutorial | Kodeco ...
- swift单元测试(三)XCTest之UI测试UITest
继上篇文章介绍了XCTest中的单元测试,这片土地主要介绍下苹果官方测试框架XCTest中的的UITest. 1.UITest简介 UI Tests是一个自动测试UI与交互的Testing组件.UI ...
- 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 ...
- 27个提升效率的iOS开源库推荐
2019独角兽企业重金招聘Python工程师标准>>> 我热爱开源,更喜爱那些花费宝贵的业余时间来创造奇迹的开发者们,感谢他们将自己辛苦劳动的成果无偿分享给大家.开源作者和贡献者们, ...
- 27个iOS开源库,让你的开发坐上火箭吧
本文翻译自Medium,原作者是Paweł Białecki,原文 27个iOS开源库,让你的开发坐上火箭吧 你不会想错过他们,真的. 我爱开源. 并且我喜欢开发者们,把他们宝贵的私人时间用来创造神奇 ...
- 老司机 iOS 周报 #49 | 2018-12-24
老司机 iOS 周报,只为你呈现有价值的信息. 你也可以为这个项目出一份力,如果发现有价值的信息.文章.工具等可以到 Issues 里提给我们,我们会尽快处理.记得写上推荐的理由哦.有建议和意见也欢迎 ...
- ios开发——27个iOS开源库,让你的开发坐上火箭吧
本文翻译自Medium,原作者是Paweł Białecki,原文 27个iOS开源库,让你的开发坐上火箭吧 你不会想错过他们,真的. 我爱开源. 并且我喜欢开发者们,把他们宝贵的私人时间用来创造神奇 ...
- iOS开发——27个开源库,让你的开发坐上火箭吧
27个iOS开源库,让你的开发坐上火箭吧 你不会想错过他们,真的. 我爱开源. 并且我喜欢开发者们,把他们宝贵的私人时间用来创造神奇的东西,然后他们会和其他人分享并且不求回报.开源作者和贡献者,你们是 ...
- IOS 第三方开源库汇总
IOS 第三方开源库汇总 1. 常用开源库简介 2. 统计工具 3. 数据埋点工具 4. 社交分享集成工具 5. 网络通信,网络数据工具 6. 音视频处理工具 7. 图像处理工具 8. 云存储 9. ...
最新文章
- 《javascript语言精粹》读书笔记(一)
- 为何我的BLOG不能DIY?
- 自己动手搭建DNS服务器
- Day11多态部分-3
- 使用python简单连接并操作数据库
- runtime无法执行grep_如何使管道使用Runtime.exec()?
- Android反编译分析工具
- 上海科技大学计算机研究生调剂,2021年上海科技大学考研招生调剂信息
- 多说评论如何显示最近访客
- 祝贺swm8023刷HDU-Steps登顶+突破新Section,14.2不是传说中的高级计算几何,而是数学~~...
- 全球及中国电子级硅烷(SiH4)行业动态分析及发展前景预测报告2021~2026年
- 明源售楼系统技术解析 房源生成(二)
- 图形学中走样(Aliasing)和反走样(Antialiasing)
- [机缘参悟-62]:《兵者,诡道也》-3-三十六计解读-敌战计
- android edittext 输入法表情,Android开发中EditText禁止输入Emoji表情符
- Echarts绘制Tree树图的涟漪效果effectScatter
- IOS面试攻略(1.0)
- 作业一 统计软件简介与数据操作
- NGUI:HUD Text
- 正则表达式检测电子邮件_电子邮件中的垃圾邮件检测