一成箫、為什么要進(jìn)行單元測試
單元測試是指開發(fā)者編寫代碼酱床,去驗(yàn)證被測代碼是否正確的一種手段屉栓,其實(shí)就是用代碼去檢測代碼舷蒲。合理的利用單元測試可以提高軟件的質(zhì)量。
二友多、蘋果自帶的單元測試
圖中已對(duì)方法進(jìn)行了說明
自帶測試的斷言
//通用斷言
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的斷言
異步測試的栗子
三牲平、為什么使用Quick+Nimble?
主要是由于蘋果官方框架的測試方法及斷言不明確夷陋,可讀性不好欠拾,難以分辨胰锌,交接項(xiàng)目需要花費(fèi)的時(shí)間很多,所以建議采用三方測試框架
目前主流的三方測試框架主要有:
oc中:kiwi
藐窄、specta
资昧、cedar
swift:quick+nimble
、Sleipnir
由于項(xiàng)目是使用的swift語言荆忍,所以主要采用quick+nimble格带,用于單元測試和斷言。
如果你的項(xiàng)目是OC的刹枉,推薦使用kiwi叽唱。
Quick+Nimble介紹
Quick 是一個(gè)建立在XCTest 上,為 Swift 和 Objective-C 設(shè)計(jì)的測試框架微宝,對(duì)測試使用Swift編寫的App非常友好棺亭,對(duì) Swift 使用者來說,Quick 是最佳選擇蟋软。
它通過 DSL
去編寫非常類似于 RSpec
的測試用例镶摘。
Nimble
就像是 Quick
的搭檔,它提供了匹配器作為斷言岳守,用于編寫匹配模式凄敢。
配置 Quick+Nimble
使用Quick+Nimble
1、在測試文件中導(dǎo)入框架
import Quick
import Nimble
2湿痢、在測試文件中導(dǎo)入需要測試的項(xiàng)目的target
@testable import UnitTest
這樣對(duì)于 Swift 中受保護(hù)的屬性涝缝、方法等都可以暴露使用了
3、將測試文件的繼承類 改成 QuickSpec
譬重,必須確保我們的 class 是QuickSpec
的子類拒逮,它也是原本 XCTestCase
的子類
4、簡單的測試用例
在此只是引導(dǎo)簡單的使用害幅,具體在測試過程中如何設(shè)計(jì)編寫需要看自己的需求消恍。
Quick關(guān)鍵字說明
關(guān)鍵字 | 用途 |
---|---|
describe | 描述類和類的方法 |
context | 用于指定條件或狀態(tài) |
it | 用于描述測試的方法名 |
beforeEach/afterEach | 相當(dāng)于setUp/tearDown |
beforeSuite/afterSuite | 相當(dāng)于全局setUp/teardown |
在describe 岂昭、context以现、it前加“x” | 表示可以屏蔽此方法的測試 |
在describe 、context约啊、it前加“f” | 表示可以只測試這些帶f的測試 |
Nimble關(guān)鍵字說明
Nimble一般使用 expect(...).to 和 expect(...).notTo的寫法
Nimble中的匹配函數(shù)
針對(duì)不同的業(yè)務(wù)場景邑遏,使用不同的函數(shù),在此就不一一列舉了恰矩。