App由一個(gè)個(gè)功能組成簸喂,每一個(gè)功能則由相應(yīng)的函數(shù)來(lái)組成,單元測(cè)試就是針對(duì)App里面的函數(shù)進(jìn)行測(cè)試嫂丙,有了它能使我們的項(xiàng)目更加的健壯娘赴,使用前提是用代碼來(lái)測(cè)試所寫(xiě)方法,每個(gè)測(cè)試方法都是獨(dú)立的.
### XCTest
XCTest就是XCode為我們提供的一個(gè)框架跟啤,它提供了各個(gè)層次的測(cè)試诽表。
步驟:
每個(gè)XCode創(chuàng)建iOS的工程中都有一個(gè)叫做”工程名Tests”的分組,這個(gè)分組里就是XCTestCase的子類隅肥,XCTest中的測(cè)試類都是繼承自XCTestCase竿奏。
例如新建一個(gè)工程(Demo)就能看到
相應(yīng)的測(cè)試Target叫做'YYDemoTests'.每個(gè)測(cè)試文件都可以獨(dú)立定義一個(gè)XCTest的子類,每個(gè)方法以test開(kāi)頭即可腥放。使用蘋(píng)果系統(tǒng)的assert風(fēng)格泛啸,可以判斷測(cè)試是不是滿足某個(gè)特定的條件,不符合的話在執(zhí)行的時(shí)候就會(huì)爆出Error秃症,定位出有問(wèn)題的行候址。
**使用**
* 測(cè)試方法的命名
XCTest中所有的測(cè)試用例的命名都是以test開(kāi)頭的
* setUp
用于在測(cè)試用例運(yùn)行前吕粹,做一些初始化工作
* tearDown
在所有的測(cè)試用例都執(zhí)行完畢后執(zhí)行
* 測(cè)試用例可以單獨(dú)執(zhí)行,也可以相同文件方法一起執(zhí)行
* 測(cè)試的方法在控制臺(tái)都會(huì)輸出該方法運(yùn)行的時(shí)間,如圖
* 舉例
- (void)testParseDict
{
//given
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"haha",@"userName",
@"10",@"userAge",
@"China",@"country",
@"modelId",@"id",
nil];
Model *model = [[Model alloc] init];
//when
[model autoParseWithDict:dict];
//then
XCTAssertNotNil(model.userName,@"parseDict Error");
}
XCTest提供的斷言有很多岗仑,可以進(jìn)行值的檢測(cè):
* XCTAssertNil
* XCTAssertNotNil
* XCTAssert
* XCTAssertTrue
* XCTAssertFalse
* XCTAssertEqualObjects
* XCTAssertNotEqualObjects
* XCTAssertEqual
* XCTAssertNotEqual
* XCTAssertGreaterThan
* XCTAssertGreaterThanOrEqual
* XCTAssertLessThan
* XCTAssertLessThanOrEqual