單元測試

OCUnit 就是 XCTest進(jìn)行測試蘋果自帶的測試框架,GHUnit是一個(gè)可視化的測試框架,GHUnit是一個(gè)可視化的測試框架;OCMock就是模擬某個(gè)方法或者屬性的返回值;

第三方測試框架:如:GHUnit,KiWi,OCMock,Specta

?"AFNetworking.h"#import//waitForExpectationsWithTimeout是等待時(shí)間,超過了就不再等待往下執(zhí)行。

#define WAIT do {\

[self expectationForNotification:@"RSBaseTest" object:nil handler:nil];\

[self waitForExpectationsWithTimeout:30 handler:nil];\

} while (0);

#define NOTIFY \

[[NSNotificationCenter defaultCenter]postNotificationName:@"RSBaseTest" object:nil];

@interface UnitTestDemoTestsTests : XCTestCase

@property (nonatomic, strong) STAlertView *stAlertView;

@end

@implementation UnitTestDemoTestsTests

- (void)setUp

{

[super setUp];

// Put setup code here. This method is called before the invocation of each test method in the class.

}

- (void)tearDown {

// Put teardown code here. This method is called after the invocation of each test method in the class.

[super tearDown];

}

- (void)testExample

{

NSLog(@"自定義測試testExample");

int? a= 3;

XCTAssertTrue(a == 0,"a 不能等于 0");

// This is an example of a functional test case.

// Use XCTAssert and related functions to verify your tests produce the correct results.

}

-(void)testRequest

{

// 1.獲得請求管理者

AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];

mgr.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html",nil];

// 2.發(fā)送GET請求

[mgr GET:@"http://www.weather.com.cn/adat/sk/101110101.html" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {

NSLog(@"responseObject:%@",responseObject);

XCTAssertNotNil(responseObject, @"返回出錯(cuò)");

self.stAlertView = [[STAlertView alloc]initWithTitle:@"驗(yàn)證碼" message:nil textFieldHint:@"請輸入手機(jī)驗(yàn)證碼" textFieldValue:nil cancelButtonTitle:@"取消" otherButtonTitle:@"確定" cancelButtonBlock:^{

//點(diǎn)擊取消返回后執(zhí)行

[self testAlertViewCancel];

NOTIFY //繼續(xù)執(zhí)行

} otherButtonBlock:^(NSString *b) {

//點(diǎn)擊確定后執(zhí)行

[self alertViewComfirm:b];

NOTIFY //繼續(xù)執(zhí)行

}];

[self.stAlertView show];

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {

NSLog(@"error:%@",error);

XCTAssertNil(error, @"請求出錯(cuò)");

NOTIFY //繼續(xù)執(zhí)行

}];

WAIT? //暫停

}

#pragma mark - 測試各個(gè)斷言的用法都列舉出來了

/* 測試各個(gè)斷言 */

- (void)testAssert

{

//? ? XCTFail(format…) 生成一個(gè)失敗的測試;

//? ? XCTFail(@"Fail");

// XCTAssertNil(a1, format...) 為空判斷, a1 為空時(shí)通過,反之不通過;

//? ? XCTAssertNil(@"not nil string", @"string must be nil");

// XCTAssertNotNil(a1, format…) 不為空判斷,a1不為空時(shí)通過,反之不通過;

//? ? XCTAssertNotNil(@"not nil string", @"string can not be nil");

// XCTAssert(expression, format...) 當(dāng)expression求值為TRUE時(shí)通過;

//? ? XCTAssert((2 > 2), @"expression must be true");

// XCTAssertTrue(expression, format...) 當(dāng)expression求值為TRUE時(shí)通過;

//? ? XCTAssertTrue(1, @"Can not be zero");

// XCTAssertFalse(expression, format...) 當(dāng)expression求值為False時(shí)通過;

//? ? XCTAssertFalse((2 < 2), @"expression must be false");

// XCTAssertEqualObjects(a1, a2, format...) 判斷相等, [a1 isEqual:a2] 值為TRUE時(shí)通過,其中一個(gè)不為空時(shí),不通過;

//? ? XCTAssertEqualObjects(@"1", @"1", @"[a1 isEqual:a2] should return YES");

//? ? XCTAssertEqualObjects(@"1", @"2", @"[a1 isEqual:a2] should return YES");

//? ? XCTAssertNotEqualObjects(a1, a2, format...) 判斷不等, [a1 isEqual:a2] 值為False時(shí)通過,

//? ? XCTAssertNotEqualObjects(@"1", @"1", @"[a1 isEqual:a2] should return NO");

//? ? XCTAssertNotEqualObjects(@"1", @"2", @"[a1 isEqual:a2] should return NO");

// XCTAssertEqual(a1, a2, format...) 判斷相等(當(dāng)a1和a2是 C語言標(biāo)量、結(jié)構(gòu)體或聯(lián)合體時(shí)使用,實(shí)際測試發(fā)現(xiàn)NSString也可以);

// 1.比較基本數(shù)據(jù)類型變量

//? ? XCTAssertEqual(1, 2, @"a1 = a2 shoud be true"); // 無法通過測試

//? ? XCTAssertEqual(1, 1, @"a1 = a2 shoud be true"); // 通過測試

// 2.比較NSString對象

//? ? NSString *str1 = @"1";

//? ? NSString *str2 = @"1";

//? ? NSString *str3 = str1;

//? ? XCTAssertEqual(str1, str2, @"a1 and a2 should point to the same object"); // 通過測試

//? ? XCTAssertEqual(str1, str3, @"a1 and a2 should point to the same object"); // 通過測試

// 3.比較NSArray對象

//? ? NSArray *array1 = @[@1];

//? ? NSArray *array2 = @[@1];

//? ? NSArray *array3 = array1;

//? ? XCTAssertEqual(array1, array2, @"a1 and a2 should point to the same object"); // 無法通過測試

//? ? XCTAssertEqual(array1, array3, @"a1 and a2 should point to the same object"); // 通過測試

// XCTAssertNotEqual(a1, a2, format...) 判斷不等(當(dāng)a1和a2是 C語言標(biāo)量、結(jié)構(gòu)體或聯(lián)合體時(shí)使用);

// XCTAssertEqualWithAccuracy(a1, a2, accuracy, format...) 判斷相等,(double或float類型)提供一個(gè)誤差范圍,當(dāng)在誤差范圍(+/- accuracy )以內(nèi)相等時(shí)通過測試;

//? ? XCTAssertEqualWithAccuracy(1.0f, 1.5f, 0.25f, @"a1 = a2 in accuracy should return YES");

// XCTAssertNotEqualWithAccuracy(a1, a2, accuracy, format...) 判斷不等,(double或float類型)提供一個(gè)誤差范圍,當(dāng)在誤差范圍以內(nèi)不等時(shí)通過測試;

//? ? XCTAssertNotEqualWithAccuracy(1.0f, 1.5f, 0.25f, @"a1 = a2 in accuracy should return NO");

// XCTAssertThrows(expression, format...) 異常測試,當(dāng)expression發(fā)生異常時(shí)通過;反之不通過;(很變態(tài))

// XCTAssertThrowsSpecific(expression, specificException, format...) 異常測試,當(dāng)expression發(fā)生 specificException 異常時(shí)通過;反之發(fā)生其他異常或不發(fā)生異常均不通過;

// XCTAssertThrowsSpecificNamed(expression, specificException, exception_name, format...) 異常測試,當(dāng)expression發(fā)生具體異常、具體異常名稱的異常時(shí)通過測試,反之不通過;

// XCTAssertNoThrow(expression, format…) 異常測試,當(dāng)expression沒有發(fā)生異常時(shí)通過測試;

// XCTAssertNoThrowSpecific(expression, specificException, format...)異常測試,當(dāng)expression沒有發(fā)生具體異常、具體異常名稱的異常時(shí)通過測試,反之不通過;

// XCTAssertNoThrowSpecificNamed(expression, specificException, exception_name, format...) 異常測試,當(dāng)expression沒有發(fā)生具體異常、具體異常名稱的異常時(shí)通過測試,反之不通過

}

-(void)testAlertViewCancel

{

NSLog(@"取消");

}

-(void)testAlertViewComfirm

{

[self alertViewComfirm:nil];

}

-(void)alertViewComfirm:(NSString *)test

{

NSLog(@"手機(jī)驗(yàn)證碼:%@",test);

}

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

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

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