iOS 如何做單元測(cè)試

一、為什么要進(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中:kiwispecta、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ù),在此就不一一列舉了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容