[基礎]iOS 單元測試(一)入門與配置

全部文章目錄:http://my.oschina.net/ChenTF/blog/677112html

本篇文章地址: http://my.oschina.net/ChenTF/blog/677309git

會持續的更新全部歷史文章, 因此收藏的話請收藏上面的地址。github

workspace — project — targets 講解

    一個工做空間能夠包含多個項目,一個項目能夠包含多個目標(生成物)。express

    一個項目中根據運行的targets不一樣,能夠進行不一樣的編譯設置,project是基礎父類,targets是子類,targets的設置會覆蓋project的設置。緩存

 

Target與單元測試的關係

     單元測試是在一個新的target上進行的設置,這樣就不會影響程序開發,編譯。函數

     在XCode7中建立一個項目時默認是選中建立測試target的,若是沒有,建立方法以下:File -> New -> target -> UITest/UnitTest,建立完成後會自動建立對應的文件夾。單元測試

UnitTest

     使用該UnitTest測試一些代碼邏輯,使用UITest測試UI的點擊交互邏輯。測試

1.建立要測試的代碼

2.建立測試類

說明:ui

  • 任何測試類都須要繼承自 XCTestCase 類
  • setUp,tearDown是系統默認方法
  • 命名:測試的目標類名+Tests

3.編寫測試方法

說明:spa

  • 測試方法必須以testXXX開頭,Xcode會自動識別出全部的測試方法
  • 在一個類中測試方法的調用順序是按照方法的順序來調用的,本例中1 -> 2 -> 3。
  • 須要測試某些邏輯性操做時,要主要測試方法的編寫順序,好比 1先插入10條數據 -> 2根據id查詢數據 -> 3查詢全部數據
  • 每一個測試方法是分開到,調用順序 setUp -> test1 -> tearDown, setUp -> test2 -> tearDown,這樣保證各個測試用例直接不會互相影響

調用:

  • 執行全部測試方法:command + u
  • 只執行某個測試方法:點擊方法前的菱形(目前是對號/錯號)
  • 執行某個類的全部測試方法:點擊類前的菱形(目前是對號/錯號)

 

4.測試結果與XCTAssert斷言函數

     一個測試是否經過,是須要經過XCTassert類來進行驗收的,XCTAssert是 一系列宏方法,提供了不少的判斷(下面會列舉)。

     若是經過則是在方法前是√,沒有打印;若是失敗則方法前是×,打印。(看上圖)

打印:

測試用例列表:

XCTAssert宏方法

參考地址:http://my.oschina.net/u/1418722/blog/340194?fromerr=RUMiSWBO

XCTFail(...)
任未嘗試都會測試失敗,...是輸出的提示文字。(後面都是這樣)

XCTAssertNil(expression, ...)
expression爲空時經過,不然測試失敗。
expression接受id類型的參數。

XCTAssertNotNil(expression, ...)
expression不爲空時經過,不然測試失敗。
expression接受id類型的參數。

XCTAssert(expression, ...)
expression爲true時經過,不然測試失敗。
expression接受boolean類型的參數。

XCTAssertTrue(expression, ...)
expression爲true時經過,不然測試失敗。
expression接受boolean類型的參數。

XCTAssertFalse(expression, ...)
expression爲false時經過,不然測試失敗。
expression接受boolean類型的參數。

XCTAssertEqualObjects(expression1, expression2, ...)
expression1和expression1地址相同時經過,不然測試失敗。
expression接受id類型的參數。

XCTAssertNotEqualObjects(expression1, expression2, ...)
expression1和expression1地址不相同時經過,不然測試失敗。
expression接受id類型的參數。

XCTAssertEqual(expression1, expression2, ...)
expression1和expression1相等時經過,不然測試失敗。
expression接受基本類型的參數(數值、結構體之類的)。

XCTAssertNotEqual(expression1, expression2, ...)
expression1和expression1不相等時經過,不然測試失敗。
expression接受基本類型的參數。

XCTAssertEqualWithAccuracy(expression1, expression2, accuracy, ...)
expression1和expression2之間的任何值都大於accuracy時,測試失敗。
expression一、expression二、accuracy都爲基本類型。

XCTAssertNotEqualWithAccuracy(expression1, expression2, accuracy, ...)
expression1和expression2之間的任何值都小於等於accuracy時,測試失敗。
expression一、expression二、accuracy都爲基本類型。

XCTAssertGreaterThan(expression1, expression2, ...)
expression1 <= expression2時,測試失敗。
expression爲基本類型

XCTAssertGreaterThanOrEqual(expression1, expression2, ...)
expression1 < expression2時,測試失敗。
expression爲基本類型

XCTAssertLessThan(expression1, expression2, ...)
expression1 >= expression2時,測試失敗。
expression爲基本類型

XCTAssertLessThanOrEqual(expression1, expression2, ...)
expression1 > expression2時,測試失敗。
expression爲基本類型

XCTAssertThrows(expression, ...)
expression沒拋異常,測試失敗。
expression爲一個表達式

XCTAssertThrowsSpecific(expression, exception_class, ...)
expression沒拋指定類的異常,測試失敗。
expression爲一個表達式
exception_class爲一個指定類

XCTAssertThrowsSpecificNamed(expression, exception_class, exception_name, ...)
expression沒拋指定類、指定名字的異常,測試失敗。
expression爲一個表達式
exception_class爲一個指定類
exception_name爲一個指定名字

XCTAssertNoThrow(expression, ...)
expression拋出異常時,測試失敗。
expression爲一個表達式

XCTAssertNoThrowSpecific(expression, exception_class, ...)
expression拋出指定類的異常,測試失敗。
expression爲一個表達式

XCTAssertNoThrowSpecificNamed(expression, exception_class, exception_name, ...)
expression拋出指定類、指定名字的異常,測試失敗。
expression爲一個表達式
exception_class爲一個指定類
exception_name爲一個指定名字

測試環境的部署

1.Target Membership

參考:http://www.cnblogs.com/graphics/p/4117353.html

    Target membership是指XCode中,一個文件屬於哪個工程,在XCode左側的工程面板中選中一個文件,在XCode右側的屬性面板中會顯示其Target Membership,以下圖。

    當前的文件AppDelegate.m屬於書譜這個Target。

Target Membership的一些屬性。

  • .h  文件沒有Target Membership
  • 文件夾引用有Target Membership,其子文件繼承該文件夾的Target Membership。但面板中不顯示子文件的Target Membership。

    之前遇到一個錯誤,就是UIImage建立的時候返回nil,仔細查看發現,圖片的Target Membership選項沒有勾上。這個錯誤比較難以發現,特此記之。

 

2.Link Binary With Libraries

     在測試本地存儲是,若是須要一些二進制文件的支持,則test targert也須要引入相應的文件(配置和正常項目需同樣)。

 

3.設置本地的支持文件路徑

提醒:

     每次修改完配置文件,建議先Clean(Command+Shift+K)緩存,再編譯。

4.PCH

    pch 和main target設置成一直, 注意Precompile Prefix Header選項。

 

5.Pods設置

     當項目中有pod時, 在測試文件中引用pods的文件, 提示找不到, 錯誤以下:

     解決方案: 設置PROJECT的Configurations

 

6.plist設置

     兩種方案

     一: 設置plist文件與build一致

     二: 將info.plist路徑改爲build target的路徑

 

 

Code

https://github.com/ChenTF/Experiences/tree/master/XCodeSetting

相關文章
相關標籤/搜索