- (void)testExample {
// This is an example of a functional test case.
// Use XCTAssert and related functions to verify your tests produce the correct results. NSLog(@"开始爱上单元测试的第一个单元测试测试");
NSString *test = @"这是我的第一个单元测试";
XCTAssertTrue([test isEqualToString:@"这是我的第一个单元测试"]);
}

这是一个简单的单元测试 command+u就可以编译成功:test是否等于@"这是我的第一个单元测试",不等于则会断言crach

2>.

-(void)testRequset {
XCTestExpectation *expectation = [self expectationWithDescription:@"没有满足期望"];
AFHTTPSessionManager *sessionManager = [AFHTTPSessionManager manager];
sessionManager.responseSerializer = [AFHTTPResponseSerializer serializer];
[sessionManager POST:@"http://wthrcdn.etouch.cn/weather_mini" parameters:@{@"city":@"北京"} progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSLog(@"%@",responseObject);
//异步操作后,获取结果,判断异步方法的结果是否正确
XCTAssertNotNil(responseObject,@"返回出错");
//如果断言没问题,就调用fulfill宣布测试满足
[expectation fulfill];
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"%@",error);
XCTAssertNil(error,@"请求出错"); }]; //设置5秒的超时时间,如果没有满足测试条件就报错
[self waitForExpectationsWithTimeout:5.0 handler:^(NSError * _Nullable error) { if (error) { NSLog(@"timeout error: %@",error);
}
}]; }

这是一个关于网络AFN的异步加载单元测试,我用的是网络上一个天气的接口:因为是异步的,所以设置了5秒的超时时间,如果5秒后没有加载到请求到数据就会报错;

请求到数据不为空则没问题,数据为空会断言crach;

上面用到了  XCTestExpectation ,定义的参数将会在测试log中打印出来方便测试者查看测试结果;

也可以理解为超时错误提示,因为只有在异步操作时间超过了预设时间时才会在log中打印出来;

[ fulfill ]:每一个XCTestExpectation都需要对应一个fulfill,否则将会导致测试失败;

通过waitForExpectationsWithTimeout:handler:做了两件事:

  设置异步测试的时间长度,当超过时间时,报测试错误,并打印预设的超时错误信息>

  超时发生时执行block中的方法>

iOS 初步单元测试的更多相关文章

  1. 【iOS】单元测试

    iOS单元测试(作用及入门提升) 字数1704 阅读16369 评论26 喜欢247 由于只是一些简单实用的东西,学学还是挺不错的.其实单元测试用的好,开发起来也会快很多.单元测试对于我目前来说,就是 ...

  2. iOS - UnitTests 单元测试

    1.UnitTests 在计算机编程中,单元测试(又称为模块测试, Unit Testing)是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作.程序单元是应用的最小可测试部件.在过程化编 ...

  3. iOS初步开发

    趁公司目前iOS整个没人管理,我折腾一下调试工具,刚好nordic也有参考demo. 然后作为helloworld级别的我... 就直接down下来,结果,还不错, 不像oschina.net和cod ...

  4. iOS 开发-单元测试

    前言 维基百科对单元测试的定义如下: 在计算机编程中,单元测试(英语:Unit Testing)又称为模块测试, 是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作.程序单元是应用的最小可 ...

  5. iOS基础 - 单元测试

    单元测试(unit testing):对软件中最小可测试单元进行检查和验证.一般面向过程的语言中,基本单元为函数,面向对象的语言中,基本单元通常是类,其实对于一个手机上的app来说基本单元也可以是一个 ...

  6. iOS进行单元测试OCUnit+xctool

    单元测试 什么是单元测试 wiki解释 简单说来就是为你的方法多专门写一个测试函数.以保证你的方法在不停的修改开发中.保持正确.如果出错,第一时间让你知道,这样从最小单位开始监控来保证软件的质量. 我 ...

  7. iOS开发之单元测试

    开始之前 本文侧重讲述如何在iOS程序的开发过程中使用单元测试.使用Xcode自带的OCUnit作为测试框架. 一.单元测试概述 单元测试作为敏捷开发实践的组成之一,其目的是提高软件开发的效率,维持代 ...

  8. iOS开发的知名大牛博客小汇

    王巍的博客:王巍目前在日本横滨任职于LINE.工作内容主要进行Unity3D开发,8小时之外经常进行iOS/Mac开发.他的陈列柜中已有多款应用,其中番茄工作法工具非常棒.http://onevcat ...

  9. iOS大神牛人的博客集合

    王巍的博客:王巍目前在日本横滨任职于LINE.工作内容主要进行Unity3D开发,8小时之外经常进行iOS/Mac开发.他的陈列柜中已有多款应用,其中番茄工作法工具非常棒. http://onevca ...

随机推荐

  1. 完善dedecms站内搜索代码,为搜索结果添加第*页

    自那些平凡而伟大的程序猿开发了内容管理系统(cms),为了让看客们更快地找到自己感兴趣的内容,他们不断完善站内搜索代码,形成了一个小型的站内搜索引擎.可能有些网站模板设计师没考虑到seo的问题,很多站 ...

  2. [Effective JavaScript 笔记]第60条:支持方法链

    无状态的API的部分能力是将复杂操作分解为更小的操作的灵活性.一个很好的例子是字符串的replace方法.由于结果本身也是字符串,可以对前一个replace操作重复执行替换.这种模式的一个常见用例是在 ...

  3. HDU 1710 二叉树的遍历 Binary Tree Traversals

    Binary Tree Traversals Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/O ...

  4. poj1753枚举

    Flip Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 33670   Accepted: 14713 Descr ...

  5. ubuntu12 apache2部署多个网站的方法

    由于对apache2的配置不是很精通.吃了不少瘪. 这里总结下,希望对碰到同样问题的人带来帮助: 假设需求是有两个站点,site1和site2.其端口分别为80和8080. 1. 配置监听端口 修改 ...

  6. PHP中通过加号合并数组

    通常,我们合并多个数组用的是array_merge()函数,其实,PHP手册中关于数组操作符的介绍给了我们更简单的方法,那就是"+"号,看看下面的例子就明白了(详细了解) 代码: ...

  7. Convert Sorted List to Balanced BST

    Given a singly linked list where elements are sorted in ascending order, convert it to a height bala ...

  8. Linux运维

    概要:http://os.51cto.com/art/201312/423616.htm 论坛: http://www.linux360.cn/ https://www.centos.bz/ http ...

  9. Android 中的selector

    今天做程序时,发现了selector 选择器不单单能用系统的自定义属性(比如,  <item android:state_selected="true" android:co ...

  10. (转)SQL SERVER的锁机制(二)——概述(锁的兼容性与可以锁定的资源)

    二.完整的锁兼容性矩阵(见下图) 对上图的是代码说明:见下图. 三.下表列出了数据库引擎可以锁定的资源. 名称 资源 缩写 编码 呈现锁定时,描述该资源的方式 说明 数据行 RID RID 9 文件编 ...