iOS单元测试

iOS单元测试

前言

  • 单元测试使用XCTest框架
  • 单元测试的目标:模型文件
  • 用处:不基于界面UI的情况下,保证模型类的逻辑正确

创建单元测试

  • File——New——Target——iOS Unit Testing Bundle
  • 也可以如下图操作


    unittest_1.png

默认方法

  • 测试用例文件名约定:以测试类名起始,添加Tests结尾, 如PersonTests.m
  • 类中以test开头的方法且void返回类型的方法都会变成单元测试用例,如下
- (void)testAge
{
    // 在单元测试中一定要有边界测试
    Person *p = [[Person alloc] init];
    p.age = 17;
    XCTAssertTrue(p.age >= 18, @"年龄应该大于或等于18岁");
    p.age = 61;
    XCTAssertTrue(p.age <= 60, @"年龄应该小于或等于60岁");
}

  • 默认方法
// 每次测试前调用,可以在测试之前创建在test case方法中需要用到的一些对象等
- (void)setUp

// 每次测试结束时调用
- (void)tearDown

//性能测试方法,通过测试block中方法执行的时间,比对设定的标准值和偏差觉得是否可以通过测试
    [self measureBlock:^{
        // Put the code you want to measure the time of here.
        for (int i = 0; i < 1000; i++) {
            NSLog(@"时间");
        }
    }];

断言

  XCTAssert(expression, format...)

  //Bool测试:  
  XCTAssertTrue(expression, format...)
  XCTAssertFalse(expression, format...)

  //相等测试
  XCTAssertEqual(expression1, expression2, format...)
  XCTAssertNotEqual(expression1, expression2, format...)

  //double float 对比数据测试使用
  XCTAssertEqualWithAccuracy(expression1, expression2, accuracy, format...)
  XCTAssertNotEqualWithAccuracy(expression1, expression2, accuracy, format...)

  //Nil测试,XCTAssert[Not]Nil断言判断给定的表达式值是否为nil
  XCTAssertNil(expression, format...)
  XCTAssertNotNil(expression, format...)

  //失败断言     
  XCTFail(format...)
  

期望

  • 需要在一定时间之后再进行判断的测试例,可以使用 expectationForPredicate 来对未来的状态作出假设并测试在规定的超时时间内是否得到理想的结果
    [self expectationForPredicate: 谓词 evaluatedWithObject:被测试对象 handler:nil];
    
    // 设置期望的时间
    [self waitForExpectationsWithTimeout:超时时间 handler: nil];
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 编写测试可不是一项迷人的工作;然而,由于测试可以避免使你的宝贝应用程序变成一块充斥错误的大垃圾场,所以编写测试又是...
    cosWriter阅读 1,615评论 0 4
  • 单元测试 为什么需要单元测试 减少代码中的低级错误。 有效的降低bug的出现率。 增强可维护性。 有助于设计:写单...
    不要人夸颜色好阅读 1,542评论 0 3
  • /*------------使用Xcode自带单元测试UnitTest-----*/ /* 单元测试:就是为...
    彬至睢阳阅读 283评论 0 0
  • 为满足某些特殊人群的生理需要,或某些疾病患者的营养需要,按特殊配方而专门加工的食品。这类食品的成分或成分含量,应与...
    爱吃苹果的小花猫阅读 1,232评论 0 0
  • 原谅我,先辈们 为了获取敌人的首级 让我做一次杀手, 在黄昏中 看着夕阳的余晖 在利剑中冷笑我 我手拂过利刃 刃是...
    伊万公津阅读 200评论 0 0