一、單元測試:測試範圍小,僅僅測試一個小單元(如方法、函數不對的,對軟件穩定有很大幫助)函數
二、集羣測試:測試範圍比較大,測試項目中的全部的功能單元測試
三、壓力測試:模擬大批量數據/大數量的用戶學習
單元測試的好處,即在測試文件中能夠對某個正式方法進行測試,而不須要在正式文件中修改加測試,即文件和方法的測試分離。測試
新建立一個項目,iOS默認會自帶單元測試:spa
測試文件繼承了測試類:XCTestCasecode
// // IWMathTool.h // 0820單元測試 // // Created by Corwien on 16-8-20. // Copyright (c) 2016年 Corwien. All rights reserved. // 測試驅動開發 #import <Foundation/Foundation.h> @interface IWMathTool : NSObject /** * 計算兩個整數的和 */ +(int)sumWithNum1:(int)num1 num2:(int)num2; @end
單元測試的方法名必須以 test開頭blog
// // _820____Tests.m // 0820單元測試Tests // // Created by kaiyi on 16-8-20. // Copyright (c) 2016年 kaiyi. All rights reserved. // #import <XCTest/XCTest.h> #import "IWMathTool.h" // 引入須要測試的類文件 @interface _820____Tests : XCTestCase @end @implementation _820____Tests /** 單元測試2大顏色: 一、紅色:測試失敗 二、綠色:測試經過 */ - (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]; } /** * 單元測試的方法名必須以 test開頭 */ -(void)testMath { int sum = [IWMathTool sumWithNum1:20 num2:10]; // 斷言/猜想/估計 XCTAssertEqual(30, sum, @"IWMathTool方法有錯"); } - (void)testExample { XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__); } @end
單元測試2大顏色:
一、紅色:測試失敗
二、綠色:測試經過繼承
根據測試錯誤分析,發現該方法尚未實現:ip
在IWMathTool.m中實現該方法:開發
#import "IWMathTool.h" @implementation IWMathTool +(int)sumWithNum1:(int)num1 num2:(int)num2 { return num1 + num2; } @end
而後再次測試,亮了綠燈,測試經過 ^_^
單元測試能夠在一個測試方法中包含多個方法進行測試:
/** * 單元測試的方法名必須以 test開頭 */ -(void)testMath { int sum = [IWMathTool sumWithNum1:20 num2:10]; // 斷言/猜想/估計 XCTAssertEqual(30, sum, @"IWMathTool方法有錯"); // 斷言測試,指望爲TRUE,不然返回提示語句,isPositive是否爲正數 XCTAssertTrue([IWMathTool isPositive:10], @"IWMathTool方法有錯"); }
有時候一個類的方法比較多,若是都寫在一個測試文件中就顯得比較凌亂,因此,這裏能夠對多方法的類單獨寫一個測試單元文件。
下面就以IWUser.h類作示例:
先選擇Object-C test case Class類型的類
而後繼承XCTestCase類
引入#import "IWUser.h"便可進行單元測試
// IWUserTest.m // 0820單元測試 #import <XCTest/XCTest.h> #import "IWUser.h" @interface IWUserTest : XCTestCase @end @implementation IWUserTest - (void)setUp { [super setUp]; } - (void)tearDown { // Put teardown code here. This method is called after the invocation of each test method in the class. [super tearDown]; } - (void)testExample { XCTAssertNotNil([IWUser user], @"user方法返回爲空"); } @end
1.把測試的類代碼獨立到測試的文件中,業務代碼和測試代碼徹底分離,打包發佈程序測試代碼也不會包含在內,發佈程序不用刪除測試代碼。
2.方法正確與否立刻就能根據顏色看到反饋,不用看打印的結果。
3.單元測試很是輕量級、快捷,只須要測試運行某個方法,而不用整個項目都Run起來,由於有時Run整個項目很耗時。
注意,單元測試只能測一些業務方法,UI是不能測試的。
若是之前沒有單元測試,可能寫好一個方法以後,而後再去在正式的類文件中進行賦值測試,或者等方法出錯了纔來修改,或者隔一段時間再次進行賦值重複測試,這樣很是麻煩,因此,建議之後在項目中用單元測試。