1. 程式人生 > >單元測試 + UI測試

單元測試 + UI測試

control 測試用例 執行 初始 window stp ack 項目 unit test

一. 單元測試

簡介:

單元測試, 又稱模塊測試, 是針對程序模塊的最小單位來進行測試. 對於過程化變成來說, 一個單元就是單個函數 \ 過程等; 對於面向對象變成來說, 一個單元就是一個方法.

有了單元測試, 我們不需要每次都com+R 啟動我們的程序,對於大的項目來說, 啟動一次項目都會花費很長時間, 這時使用單元測試, 就方便了很多;

使用:

1. 添加測試文件

a.在創建項目的時候, 可以直接勾選include Unit Test

b.項目已存在, 可添加: File -> New -> Target -> Unit Test

文件中默認包含的四個方法:

 - (void)setUp
//初始化的代碼,在測試方法調用之前調用
- (void)tearDown
// 釋放測試用例的資源代碼,這個方法會每個測試用例執行後調用
- (void)testExample 
// 測試用例的例子,註意自己寫的測試用例方法 一定要test開頭
- (void)testPerformanceExample {
// 測試性能例子
[self measureBlock:^{
    // Put the code you want to measure the time of here.
// 需要測試性能的代碼
}];
}

2.測試 某個類中的方法

例如:

- (void)setUp {

[super setUp];

self.vc = [[ViewController alloc] init];

}

- (void)tearDown {

self.vc = nil;

[super tearDown];

}

- (void)testMyFuc {

// 調用需要測試的方法,

int result = [self.vc getNum];

// 如果不相等則會提示@“測試不通過

XCTAssertEqual(result, 200,@"測試不通過");

}

二. UI 測試

需要寫一些代碼, 來模擬 人為的操作, 從而根據結果,來判斷正確與否

- (void)testLogin{

[XCUIDevice sharedDevice].orientation = UIDeviceOrientationFaceUp;

[XCUIDevice sharedDevice].orientation = UIDeviceOrientationFaceUp;

//XCUIApplication 這是應用的代理,他能夠把你的應用啟動起來,並且每次都在一個新進程中。

XCUIApplication *app = [[XCUIApplication alloc] init];

//XCUIElement 這是 UI 元素的代理。元素都有類型和唯一標識。可以結合使用來找到元素在哪裏,如當前界面上的一個輸入框

XCUIElement *usernameTextField = app.textFields[@"username:"];

[usernameTextField tap];

[usernameTextField typeText:@"xiaofei"];

XCUIElement *passwordTextField = app.textFields[@"password:"];

[passwordTextField tap];

[passwordTextField tap];

[passwordTextField typeText:@"12345"];

[[[[[[[app childrenMatchingType:XCUIElementTypeWindow] elementBoundByIndex:0] childrenMatchingType:XCUIElementTypeOther].element childrenMatchingType:XCUIElementTypeOther].element childrenMatchingType:XCUIElementTypeOther].element childrenMatchingType:XCUIElementTypeOther].element tap];

[app.buttons[@"login"] tap];

//登錄成功後的控制器的title為loginSuccess,只需判斷控制器的title時候一樣便可判斷登錄是否成功

// XCTAssertEqualObjects(app.navigationBars.element.identifier, @"loginSuccess");

XCTAssertEqual(app.navigationBars.element.identifier, @"loginSuccess",@"測試不通過");

}

參考鏈接:

http://www.jianshu.com/p/07cfc17916e8

單元測試 + UI測試