iOS-Main - 單元測試 &基本體驗

簡介:
  • 單元測試是一種通過代碼檢測代碼的開發手段,常用于敏捷開發和測試驅動開發
  • 測試驅動開發是 紅燈(有錯誤) / 綠燈(無錯誤) 式的迭代開發
  • 代碼檢測通常需要(預先/設想)設置邊界條件,因為UI測試的時候,很多邊界條件不太容易滿足
  • 單元測試主要針對 業務邏輯 代碼進行測試!不適合做UI(ViewController)的測試
  • MVVM的設計模式,把幾乎所有重要的業務邏輯全部封裝在視圖模型,通過單元測試就很方便檢測條件以及代碼質量!
  • 測試覆蓋率,有很多人會討論到底多少代碼應該測試!
    • 需要針對業務邏輯的對外開放的函數終點測試! 如果有'局部測試'的業務邏輯小函數 ,可以臨時測試!
    • 通常公司的代碼測試覆蓋率從50% - 70%不等
  • Xcode的單元測試,還能夠做性能測試
基本體驗

1. 先創建一個單元測試的項目

創建項目

2. 創建一個Person類,預備代碼
Person.h

Person.m

3. 創建測試文件
找到

創建

4. 文件內容簡單介紹
簡單介紹

5. 創建常規的檢測,如下圖:
常規

我們點擊測試例子,旁邊的小綠按鈕測試一下,發現好像并沒有發生什莫。但是,當我們把下面的打印臺打開,其實它已經做了好多事情。
我們看打印臺,下圖所示:

log打印

單元測試不是靠NSLog來測試,NSLog是程序員用眼睛看的笨辦法。使用 -斷言- 來測試的,提前預判條件必須滿足!

6. 斷言- 來測試

斷言- 來測試

但是,我們進行下面的操作你會發現:(請看下圖)
更改條件,在此驗證

我們在此運行就會發現,如下圖:
年齡不一致

通過這次,測試,我們可以檢測到我們的數據了,和方法內部的有效性。
7. 還原
刪除obj.age++

我們在運行一下,就通過了。
**8. ** 我們創造一個空字典
如下圖:
我們傳入一個空字典@{},在給此行加上斷點,運行,單步走,我們發現
傳入的name = nil;age = 0 (nil);age類型nil,就相當于0,而我們比較的是字符串。nil 是一個指向0的指針,運行到那行就會報錯了,具體如下圖:
圖解

解決:
Person.name = nil

9 把下面這個代碼打開測試一下
第三個

我們一打開,我們便發現,此時崩潰了,我們在看一下,調用堆棧,如下圖:
發現了錯誤

那么,我們該怎么解決呢?
解決

測試

擴展 1
對于測試,我們還可以寫測試代碼,寫完之后,點擊測試按鈕,如下圖:
測試代碼

測試運行后,我們發現出錯了
解決
解決

測試

person模型測試完成

擴展 2

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容