一、為什么要進(jìn)行單元測(cè)試
單元測(cè)試是指開發(fā)者編寫代碼,去驗(yàn)證被測(cè)代碼是否正確的一種手段,其實(shí)就是用代碼去檢測(cè)代碼。合理的利用單元測(cè)試可以提高軟件的質(zhì)量。
二、蘋果自帶的單元測(cè)試

蘋果自帶測(cè)試.png
圖中已對(duì)方法進(jìn)行了說明
自帶測(cè)試的斷言
//通用斷言
XCTAssert(expression, format...)
//常用斷言:
XCTAssertTrue(expression, format...)
XCTAssertFalse(expression, format...)
XCTAssertEqual(expression1, expression2, format...)
XCTAssertNotEqual(expression1, expression2, format...)
XCTAssertEqualWithAccuracy(expression1, expression2, accuracy, format...)
XCTAssertNotEqualWithAccuracy(expression1, expression2, accuracy, format...)
XCTAssertNil(expression, format...)
XCTAssertNotNil(expression, format...)
XCTFail(format...) //直接Fail的斷言
異步測(cè)試的栗子

異步測(cè)試.png
三、為什么使用Quick+Nimble?
主要是由于蘋果官方框架的測(cè)試方法及斷言不明確,可讀性不好,難以分辨,交接項(xiàng)目需要花費(fèi)的時(shí)間很多,所以建議采用三方測(cè)試框架
目前主流的三方測(cè)試框架主要有:
oc中:kiwi 、specta、cedar
swift:quick+nimble、Sleipnir
由于項(xiàng)目是使用的swift語言,所以主要采用quick+nimble,用于單元測(cè)試和斷言。
如果你的項(xiàng)目是OC的,推薦使用kiwi。
Quick+Nimble介紹
Quick 是一個(gè)建立在XCTest 上,為 Swift 和 Objective-C 設(shè)計(jì)的測(cè)試框架,對(duì)測(cè)試使用Swift編寫的App非常友好,對(duì) Swift 使用者來說,Quick 是最佳選擇。
它通過 DSL 去編寫非常類似于 RSpec 的測(cè)試用例。
Nimble 就像是 Quick 的搭檔,它提供了匹配器作為斷言,用于編寫匹配模式。
配置 Quick+Nimble

配置圖.png
使用Quick+Nimble
1、在測(cè)試文件中導(dǎo)入框架
import Quick
import Nimble
2、在測(cè)試文件中導(dǎo)入需要測(cè)試的項(xiàng)目的target
@testable import UnitTest
這樣對(duì)于 Swift 中受保護(hù)的屬性、方法等都可以暴露使用了
3、將測(cè)試文件的繼承類 改成 QuickSpec,必須確保我們的 class 是QuickSpec 的子類,它也是原本 XCTestCase 的子類
4、簡單的測(cè)試用例

簡單的測(cè)試用例.png
在此只是引導(dǎo)簡單的使用,具體在測(cè)試過程中如何設(shè)計(jì)編寫需要看自己的需求。
Quick關(guān)鍵字說明
| 關(guān)鍵字 | 用途 |
|---|---|
| describe | 描述類和類的方法 |
| context | 用于指定條件或狀態(tài) |
| it | 用于描述測(cè)試的方法名 |
| beforeEach/afterEach | 相當(dāng)于setUp/tearDown |
| beforeSuite/afterSuite | 相當(dāng)于全局setUp/teardown |
| 在describe 、context、it前加“x” | 表示可以屏蔽此方法的測(cè)試 |
| 在describe 、context、it前加“f” | 表示可以只測(cè)試這些帶f的測(cè)試 |
Nimble關(guān)鍵字說明
Nimble一般使用 expect(...).to 和 expect(...).notTo的寫法
Nimble中的匹配函數(shù)
針對(duì)不同的業(yè)務(wù)場景,使用不同的函數(shù),在此就不一一列舉了。