以下将介绍如何使用 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文件即可
如有操作过程中出现各种报错问题可回复帖子交流经验,本人也是在无数个报错中弄明白这些问题
误喷!!!!