单元测试作为测试开发同学必须掌握的一门技能,在测试中很受重视,因为本人在做测试之前做过ios开发,于是就拿出之前的项目代码进行了练习,希望通过我的这篇文章,小哥哥小姐姐能对ios单元测试有个基本了解,会写基本的ios单元测试代码。
单元测试的定义是对可以测试的最小单元进行测试,这里的最小单元可以是一个函数代码块,可以是一个UI操作。我们就拿函数代码块来举例说明。测函数代码块,也可以理解为测试研发自己写的函数方法,说白了就是通过调用这个方法,看调用完的结果是否是这个方法本身该实现的功能, 你比如研发同学经常会封装一些工具类,如果我们对这些工具类方法进行单元测试,加入a方法,方法是-(BOOL)isLegalTelephoneNumber(NSString *)str{},我们可以看到这个方法的入参是字符串,返回是布尔值,它的功能是判断一个字符串是否是合法的手机号,那我们测试的思路就是把一个字符串(15000000001)作为参数传到a方法,调用一下,然后我们的断言就是如果调用方法后返回true,就断言成功,返回false,断言失败。
我们来看一个我们项目里的例子。
下面的代码是研发自己写的一个方法
- (NSString *)getAreaStr:(STPickerViewSelectedModel *)model {
NSString *areaName = [NSString stringWithFormat:@" %@",model.ProvinceName];
if (!kStringIsEmpty(model.CityName)) {
areaName = [NSString stringWithFormat:@" %@ %@",model.ProvinceName,model.CityName];
}
if (!kStringIsEmpty(model.AreaName) ){
areaName = [NSString stringWithFormat:@" %@ %@ %@",model.ProvinceName,model.CityName,model.AreaName];
}
return areaName;
}
我们可以看出上面的方法入参是STPickerViewSelectedModel类型(自定义的)一个model类型的数据,返回值是字符串,功能是给它传一个STPickerViewSelectedModel类型的数据,它给你返回地区字符串,我们就测我给你一个STPickerViewSelectedModel类型的数据,你能否给我返回地区字符串。
这个方法的单元测试的代码如下:
方法名字就是getAreaStr这个方法能否给我返回地区字符串
-(void)testPickerFontViewCallgetAreaStrIsreturnAreaStr{
//初始化数据
STPickerViewSelectedModel * model = [[STPickerViewSelectedModel alloc]init];
//mock数据
model.ProvinceName = @"山东省";
model.CityName = @"济南市";
//声明方法
SEL getAreaStr = NSSelectorFromString(@"getAreaStr:");
//调用方法
NSString * areaName = ((NSString * (*) (id,SEL,STPickerViewSelectedModel *))objc_msgSend)(self.pickerFrontView,getAreaStr,model);
//断言
BOOL isSuccess = [areaName isEqualToString:@" 山东省 济南市"] ? YES : NO;
assertTrue(isSuccess);
}