Figuring Out What to Test
通常情况下,单元测试需要包括:
1、核心功能:model类和方法以及与其交互的controller
2、最常见的UI工作流程
3、边界条件
4、Bug修复
FIRST principles
首字母缩写词FIRST描述了有效单元测试的一组简明标准。这些标准是:
1、fast:测试应该快速完成
2、Independent/Isolated:测试不应互相共享状态
3、Repeatable:每次运行测试时,您应该获得相同的结果。外部数据提供者或并发问题可能会导致间歇性故障。
4、Self-validating:测试应完全自动化。输出应该是“通过”或“失败”,而不是依赖于程序员对日志文件的解释。
5、Timely:理想情况下,应该在编写要测试的生产代码之前编写测试
Unit Testing in Xcode
Creating a Unit Test Target
在Xcode中使用快捷键Command-6去打开Test navigator
点击+号按钮去添加单元测试对象
默认模板给出setUp(),tearDown()两个方法和两个测试的例子方法
这里总共有3个方式来运行测试:
1、Command-U来运行所有的测试
2、在Test navigator中点击箭头按钮
3、在gutter中点击菱形按钮
在测试的方法中我们一般把代码分成given,when和then三个部分
1、Given:这一步,把需要用到的数值配置好
2、When:执行需要测试的代码
3、Then:这一步你将捕捉你期望的结果,通过XCTestAssertion
func testScoreIsComputed(){
// 1. given
let guess = sut.targetValue + 5
// 2. when
sut.check(guess: guess)
// 3. then
XCTAssertEqual(sut.scoreRound,95,"Score computed from guess is wrong")
}
参考资料:https://www.raywenderlich.com/960290-ios-unit-testing-and-ui-testing-tutorial