iOS單元測試
前言
- 單元測試使用XCTest框架
- 單元測試的目標(biāo):模型文件
- 用處:不基于界面UI的情況下虑省,保證模型類的邏輯正確
創(chuàng)建單元測試
- File——New——Target——iOS Unit Testing Bundle
-
也可以如下圖操作
默認(rèn)方法
- 測試用例文件名約定:以測試類名起始碉怔,添加Tests結(jié)尾, 如PersonTests.m
- 類中以test開頭的方法且void返回類型的方法都會變成單元測試用例徐勃,如下
- (void)testAge
{
// 在單元測試中一定要有邊界測試
Person *p = [[Person alloc] init];
p.age = 17;
XCTAssertTrue(p.age >= 18, @"年齡應(yīng)該大于或等于18歲");
p.age = 61;
XCTAssertTrue(p.age <= 60, @"年齡應(yīng)該小于或等于60歲");
}
- 默認(rèn)方法
// 每次測試前調(diào)用,可以在測試之前創(chuàng)建在test case方法中需要用到的一些對象等
- (void)setUp
// 每次測試結(jié)束時調(diào)用
- (void)tearDown
//性能測試方法礼患,通過測試block中方法執(zhí)行的時間是钥,比對設(shè)定的標(biāo)準(zhǔn)值和偏差覺得是否可以通過測試
[self measureBlock:^{
// Put the code you want to measure the time of here.
for (int i = 0; i < 1000; i++) {
NSLog(@"時間");
}
}];
斷言
XCTAssert(expression, format...)
//Bool測試:
XCTAssertTrue(expression, format...)
XCTAssertFalse(expression, format...)
//相等測試
XCTAssertEqual(expression1, expression2, format...)
XCTAssertNotEqual(expression1, expression2, format...)
//double float 對比數(shù)據(jù)測試使用
XCTAssertEqualWithAccuracy(expression1, expression2, accuracy, format...)
XCTAssertNotEqualWithAccuracy(expression1, expression2, accuracy, format...)
//Nil測試,XCTAssert[Not]Nil斷言判斷給定的表達(dá)式值是否為nil
XCTAssertNil(expression, format...)
XCTAssertNotNil(expression, format...)
//失敗斷言
XCTFail(format...)
期望
- 需要在一定時間之后再進(jìn)行判斷的測試?yán)宓梢允褂?expectationForPredicate 來對未來的狀態(tài)作出假設(shè)并測試在規(guī)定的超時時間內(nèi)是否得到理想的結(jié)果
[self expectationForPredicate: 謂詞 evaluatedWithObject:被測試對象 handler:nil];
// 設(shè)置期望的時間
[self waitForExpectationsWithTimeout:超時時間 handler: nil];