IOS开发入门之单元测试
凌雪 2018-08-29 来源 :网络 阅读 1166 评论 0

摘要:本文将带你了解IOS开发入门之单元测试,希望本文对大家学IOS有所帮助

本文将带你了解IOS开发入门之单元测试,希望本文对大家学IOS有所帮助


什么是单元测试?一听到单元测试这个词感觉很高端,其实单元测试就是为你的方法多专门写一个测试函数。以保证你的方法在不停的修改开发中。保持正确。如果出错,第一时间让你知道,这样从最小单位开始监控来保证软件的质量。
    什么时候用到单元测试:
    1、写完代码以后:想要验证一下自己写的代码是否有问题。2、写代码之前:就是写代码之前所有的功能分模块的设计好,测试通过了再写。(我反正是没用过)。3、修复某个bug后:一般修复完某个bug,为了确保修复是成功的,会写测试。
    怎么写单元测试
    好像废话有点多了,还是直接奔主题吧。创建一个工程,名字随便取,直接勾选include Unit   Tests
   
   
    万一我忘了勾选怎么办呢?可以有其他方式创建File-->new-->target-->iOS-->iOS   Unit Testing Bundle。名字自己看着办吧。
   
   
   
     
   
   
    工程创建好后,那要怎么开始测试呢?找到系统单元测试Testes文件夹中.m文件看中会到看到几个方法,我们来看下这个几个方法是什么时候调用和他们各种的作用

   
      - (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];
    }
   
    - (void)testExample {
    // This is an example of a functional test case.
    // Use XCTAssert and related functions to verify your tests produce the   correct results.
    // 测试用例的例子,注意测试用例一定要test开头
   
    }
   
    - (void)testPerformanceExample {
    // This is an example of a performance test case.
    // 测试性能例子
[self measureBlock:^{
    // Put the code you want to   measure the time of here.
    // 需要测试性能的代码
}];
    }
    在ViewController中写一个简单的方法
- (int)getNum;
实现:
- (int)getNum {
   
    return 100;
    }
    在测试的文件中导入ViewController.h,并且定义一个vc属性
 #import  
   
    #import "ViewController.h"
   
    @interface ____Tests : XCTestCase
   
    @property (nonatomic,strong) ViewController *vc;
   
   
    @end
   
    @implementation ____Tests
    测试用例的实现
- (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, 100,@"测试不通过");
    }
    command+u快捷方式运行,或者produce-->test都行,工程就跑起来了
   

   
    我们可以在在控制台清晰的看到我们要测试的用例子通过了,测试通过的测试方法会有绿色的钩。
    这时候我们改下断言,把100随便改成一个数,120.再comand+u运行下,看下什么情况
   
    
   
    很明显是能不能通过的,因为我们要测试的方法返回值是100,
    自带的测试框架还能测试某个方法的性能,
    - (void)testPerformanceExample {
    // This is an example of a performance test case.
    [self measureBlock:^{
        // Put the code you want to   measure the time of here.
   
        for (int i = 0; i<100; i++)   {
   
            NSLog(@"dd");
    }
    }];
    }
    我们在例子中添加一个for循环,测试其性能。command+u运行就能看到如图:
   
     
   
    能够非常直观的看出其调用的时间,可以用其来对比性能的优劣。
    另外XCTest还支持异步单元测试,我就不在这里展开了。最后附上常用的断言及解释。
    XCTFail(format…) 生成一个失败的测试;
    XCTAssertNil(a1, format...)为空判断,a1为空时通过,反之不通过;
XCTAssertNotNil(a1, format…)不为空判断,a1不为空时通过,反之不通过;
XCTAssert(expression, format...)当expression求值为TRUE时通过;
XCTAssertTrue(expression, format...)当expression求值为TRUE时通过;
XCTAssertFalse(expression, format...)当expression求值为False时通过;
XCTAssertEqualObjects(a1, a2, format...)判断相等,[a1 isEqual:a2]值为TRUE时通过,其中一个不为空时,不通过;
XCTAssertNotEqualObjects(a1, a2, format...)判断不等,[a1 isEqual:a2]值为False时通过;
XCTAssertEqual(a1, a2, format...)判断相等(当a1和a2是 C语言标量、结构体或联合体时使用, 判断的是变量的地址,如果地址相同则返回TRUE,否则返回NO);
XCTAssertNotEqual(a1, a2, format...)判断不等(当a1和a2是 C语言标量、结构体或联合体时使用);
XCTAssertEqualWithAccuracy(a1, a2, accuracy,   format...)判断相等,(double或float类型)提供一个误差范围,当在误差范围(+/-accuracy)以内相等时通过测试;
XCTAssertNotEqualWithAccuracy(a1, a2, accuracy,   format...) 判断不等,(double或float类型)提供一个误差范围,当在误差范围以内不等时通过测试;
XCTAssertThrows(expression, format...)异常测试,当expression发生异常时通过;反之不通过;(很变态)   XCTAssertThrowsSpecific(expression, specificException, format...) 异常测试,当expression发生specificException异常时通过;反之发生其他异常或不发生异常均不通过;
XCTAssertThrowsSpecificNamed(expression,   specificException, exception_name, format...)异常测试,当expression发生具体异常、具体异常名称的异常时通过测试,反之不通过;
XCTAssertNoThrow(expression, format…)异常测试,当expression没有发生异常时通过测试;
XCTAssertNoThrowSpecific(expression,   specificException, format...)异常测试,当expression没有发生具体异常、具体异常名称的异常时通过测试,反之不通过;
XCTAssertNoThrowSpecificNamed(expression,   specificException, exception_name, format...)异常测试,当expression没有发生具体异常、具体异常名称的异常时通过测试,反之不通过    


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之IOS频道!

本文由 @凌雪 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved