以下將介紹如何使用 XCTest.framework 盡Xcode5
步驟1:
點擊工程項目
步驟2:添加測試Targts
選中後直接Next->Finish
添加後工程會多出一個目錄
步驟3:Build Settings設置注意:儘量項目中有Build Settings都要設置
近設置Debug=YES即可
這個時候就可以 command+U 進行編譯了
此時會提示錯誤
註釋 XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__);
現在添加XCTest告一段落
步驟4:快速產生圖形化報表
下載gcov IOS7下輔助刷新的類庫:XCode5gcovPatch
地址:https://github.com/leroymattingly/XCode5gcovPatch
下載下來之後解壓縮,將以下兩個文件添加到工程:
XCTest+GCovFlush 僅添加到測試目標
GcovExtern.h 僅添加到測試目標
此時在command+U會報錯
在XCTest+GCovFlush裏
#import "GcovExtern.h"
#import <objc/runtime.h>
下載覆蓋率工具:XcodeCoverage
地址:https://github.com/leroymattingly/XCode5gcovPatch
下載完成解壓縮之後放到項目.xcodeproj文件所在的文件夾內(和.xcodeproj文件平級)
然後下載lcov(下載地址:http://ltp.sourceforge.net/coverage/lcov.php)解壓縮之後放到XcodeCoverage內。
在測試Targets下添加Build
Phases:RunScript
Script代碼: XcodeCoverage/exportenv.sh
這樣圖形生成表也就添加完畢
此時clean工程,command+U 無報錯後
打開終端,CD 到項目中XcodeCoverage目錄下 運行./getcov
成功後將自動打開網頁展示圖形化頁面點擊下方圖片紅色部分可進入下一級
步驟5:如何添加編寫單元測試類
接下來我我要對OldClass進行操作
OldClass.h
#import <Foundation/Foundation.h>
@interface OldClass :NSObject
@property (nonatomic,strong)NSString *con;
- (int)match:(NSArray *)otherCards;
@end
OldClass.m
#import "OldClass.h"
@implementation OldClass
- (int)match:(NSArray *)otherCards
{
int score =0;
for (OldClass *cardin otherCards)
{
if ([card.conisEqualToString:self.con])
{
score = 1;
}
}
return score;
}
@end
在XCTest Tests下添加測試類,只需要連接測試Targets
直接 Next->Finish
添加的測試類可以看到剛在添加XCTest時裏面的函數是一樣的,同樣註釋掉報錯代碼
編寫測試函數(測試函數必須以test開頭否則編譯是不認爲時測試函數)
- (void)testMatchesDifferentCardWithSameContents
{
NSLog(@"==============%s doing work...",__PRETTY_FUNCTION__);
OldClass *card1 = [[OldClass alloc] init];
card1.con =@"one";
OldClass *card2 = [[OldClass alloc] init];
card2.con =@"one";
NSArray *handOfCards = @[card2];
int matchCount = [card1 match:handOfCards];
XCTAssertEqual(matchCount,1,@"Should have matched");
}
此時clean工程,command+U 無報錯後
打開終端,CD 到項目中XcodeCoverage目錄下 運行./getcov
此時圖形化界面就會多出你所新添加的測試類視圖
在對已經完成的工程添加測試類時需要手動將文件添加到測試Targets Build Phases裏,添加.m文件即可
如有操作過程中出現各種報錯問題可回覆帖子交流經驗,本人也是在無數個報錯中弄明白這些問題
誤噴!!!!